dll源檔案:
class _declspec(dllexport) ctest
{
public:
static ctest *test();
string _stdcall add(string a,string b)
{
return a+b;
}
};
ctest *ctest::test()
{
return new ctest();
}
測驗程式:
class _declspec(dllexport) ctest
{
public:
string _stdcall add(string a,string b);
static ctest *test();
};
int _tmain(int argc, _TCHAR* argv[])
{
ctest *test = ctest::test();
cout<<test->add("test","ff");
return 0;
}
在cout時出錯如下:

uj5u.com熱心網友回復:
第一次發帖忘了詳細說明了:我在“使用標準 Windows 庫”編譯dll的條件下沒有問題,但是使用“靜態庫中使用 MFC”編譯dll時候就會出錯,希望大蝦門幫幫忙
uj5u.com熱心網友回復:
dll介面都是C風格的,不能有class存在的,否則遍地都是坑啊。string _stdcall add(string a,string b);這個函式只要使用靜態鏈接運行庫,就會有問題。
uj5u.com熱心網友回復:
我又測驗了一下把string _stdcall add(string a,string b);
修改為 char *_stdcall add(char* a,char * b);
就可以,好像只能傳內置型別的,改為參考也可以
uj5u.com熱心網友回復:
同樣的需求,誰能幫忙解答一下哈轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/130829.html
標籤:基礎類
上一篇:急急急~C++BUILDER中現成的類怎么做成DLL供MATLAB呼叫?
下一篇:新人求救,畫平滑曲線圖的問題
