最近在做一個專案,是在之前寫的一個DLL基礎上進行二次開發,寫一個界面程式,之前的這個DLL是通過C++builder 2007發布生成的,我現在在想用C#寫界面,因為對DLL用法不是很熟,所以來此請教各路大神,請多多指教啊。貼上DLL main的源代碼
#include <vcl.h>
#include <windows.h>
#include "feeService.h"
#include "imcplatService.h"
#pragma hdrstop
//---------------------------------------------------------------------------
int __export QueryNetIDBalance(WideString ID); //賬戶余額查詢
bool __export ChargeNetID(WideString ID, WideString Amount); //賬戶充值
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
int QueryNetIDBalance(WideString ID)
{
int Ret = -1;
try
{
_di_imcplatServicePortType ISPT = GetimcplatServicePortType(false, "");
ISPT->login("shoufei", "shoufei123");
_di_feeServicePortType PAY = GetfeeServicePortType(false, "");
RetUserBalance* UB = PAY->queryBalance(ID);
if(UB->errorCode == 0)
{
Ret = StrToFloat(UB->balance);
}
ISPT->logout();
}
catch(...)
{
;
}
return Ret;
}
//---------------------------------------------------------------------------
bool ChargeNetID(WideString ID, WideString Amount)
{
bool Ret = false;
try
{
_di_imcplatServicePortType ISPT = GetimcplatServicePortType(false, "");
ISPT->login("shoufei", "shoufei123");
_di_feeServicePortType PAY = GetfeeServicePortType(false, "");
PaymentInfo* payInfo = new PaymentInfo;
payInfo->amount = StrToInt(Amount);
payInfo->userName = ID;
NS_feeService::WSCommonResult* Result = PAY->pay(payInfo);
if(Result->errorCode == 0)
{
Ret = true;
}
ISPT->logout();
delete payInfo;
}
catch(...)
{
;
}
return Ret;
}
可以我把這個DLL向vs里面參考的時候,報錯不是一個可用的com組件啥的。還請指教啊
uj5u.com熱心網友回復:
呼叫肯定沒有問題。引數要用通用的。
WideString ID,
wchar_t * ID
編譯的時候編譯成獨立運行dll,不帶包編譯就OK啦
uj5u.com熱心網友回復:
匯出函式用__stdcall修飾符
http://bbs.csdn.net/topics/391855604
uj5u.com熱心網友回復:
C#里面沒有WideString這個型別啊
uj5u.com熱心網友回復:
http://bbs.csdn.net/topics/370147698轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88636.html
下一篇:執行緒內部資源如何訪問
