2010-04-07 128 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

相关问题