2010-04-07 124 views
0

我有.def文件,.lib文件,.dll和源文件。將DllMain winapi.dll導入Visual Studio項目C++

它使用WINAPI DllMain,它的所有功能都是這樣。

是這樣的:

BOOL APIENTRY DllMain(HANDLE hModule, 
         DWORD ul_reason_for_call, 
         LPVOID lpReserved 
     ) 
{ 
    return TRUE; 
} 


extern "C" 
{ 
int WINAPI DoSomething() { return -1; } 
int WINAPI DOSOMETHIGNELSE!() { return 202020; } 
}; 

在項目設置鏈接器我增加了的.lib文件。在extern「C」部分沒有用於實際功能的頭文件。

我包含windows.h嘗試調用DoSomething()但不知道它是什麼。

+0

糾正我,如果我錯了,但我不相信功能都不允許有S IN的名字! – 2010-04-08 01:56:33

回答

1

我不確定你到底在問什麼,但我想至少你需要爲客戶端代碼創建一個.h文件,以便它可以調用DLL中的函數 - 否則將如何編譯器知道什麼名字DoSomething是?

頭文件應該大概是這個樣子:

#ifndef DOSOMETHING_H 
#define DOSOMETHING_H 

#ifdef __cplusplus 
extern "C" 
{ 
#endif 

int WINAPI DoSomething(void); 


// I commented out the 2nd function because I don't think the `!` character 
// could ever be valid there 

//int WINAPI DOSOMETHIGNELSE!(); 


#ifdef __cplusplus 
} 
#endif 

#endif /* DOSOMETHING_H */ 
+0

什麼在.H?我嘗試了一個文件:__declspec(dllimport)int DoSomething(); – 2010-04-07 23:11:34

相關問題