用VC6.0做的一個dll庫,其中有呼叫一個Test函式,VC一呼叫這個庫,exe就例外退出.
若將形參由char* buf去掉,呼叫一切正常.
不知道在庫中呼叫char*為何不能使用?
DLL庫中的函式:
extern "C" __declspec(dllexport) int Test(char* buf)
{
return 1;
}
APP中的呼叫:
void DlgTest::MyTest()
{
typedef int (_stdcall*Check_Test)(char *,char *);
Check_Test pCheck_Test = NULL;
HINSTANCE hdll;
hdll=LoadLibrary("Test.dll");
if(hdll==NULL)
{
AfxMessageBox("call Test.dll failed!");
return 0;
}
pCheck_Test = (Check_Test)GetProcAddress(hdll,"Test");
if(!pCheck_Test)
{
MessageBox("Get function address fail !");
return 0;
}
char Reslut[100]="";
pCheck_Test(Reslut); //一呼叫到這里程式就退出
// AfxMessageBox(Reslut);
}
uj5u.com熱心網友回復:
呼叫規約應該保持一致 typedef int (_stdcall*Check_Test)(char *,char *);extern "C" __declspec(dllexport) int _stdcall Test(char* buf)
uj5u.com熱心網友回復:
謝謝,是一致的,是寫錯了.typedef int (_stdcall*Check_Test)(char *);
extern "C" __declspec(dllexport) int _stdcall Test(char* buf)
如果將形參改為int,Test(int iLen)就能正常呼叫.只要是char *就出錯.
uj5u.com熱心網友回復:
pCheck_Test(&Reslut);uj5u.com熱心網友回復:
Test 中怎么寫的?uj5u.com熱心網友回復:
dll和exe是同樣的執行緒模型嗎?轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/236231.html
標籤:進程/線程/DLL
下一篇:從零搭建符合自己需求的開發環境
