[英]call to another function in a dll causes access violation
好吧,所以我開始意識到dll並不是最簡單的東西,我正在嘗試制作一個與VC6兼容的dll,我在VS2010中使用了一些代碼,但是試圖找出如何獲得該代碼代碼可用於VC6項目我發現了以下問題:
我對dll的調用如下所示
MyDll::connect();
當我嘗試運行一個使用此功能的程序時,它會很好地啟動,但是一旦進入函數調用即
VOID connect()
{
hello(); //0xC0000005: access violation
}
VOID hello()
{
int i = 1;
}
拆卸看起來像這樣:
-> 00000000 ???
00000001 ???
00000002 ???
00000003 ???
00000004 ???
00000005 ???
00000006 ???
00000007 ???
00000008 ???
00000009 ???
etc...
您沒有導出函數.....除非該函數被注冊為導出函數,否則不允許程序訪問dll中的函數。 為此,您應該像這樣制作原型
要在類內導出函數,此函數應為1-是公共成員。 2-成為靜態成員
class MyDll{
public:
static void connect();
}
//then redeclare it like this
#ifdef _cplusplus
extern "C"{
#endif
__declspec(dllexport) void MyDll::connect(){
//TODO
}
#ifdef _cplusplus
}
#endif
對要導出的任何類成員函數執行此操作
這是一個例子
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.