将DllMain winapi .dll导入Visual Studio项目C ++

时间:2010-04-07 22:56:04

标签: c++ visual-studio winapi dll

我有.def文件,.lib文件,.dll,源文件。

它正在使用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文件。外部“C”部分的实际功能没有头文件。

我包含windows.h尝试调用DoSomething()但不知道它是什么。

1 个答案:

答案 0 :(得分: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 */