如何使用Visual Studio编译C++ DLL?

4
我有一些C++类想要编译成dll文件。当我尝试编译项目时,收到了一个未解决的外部符号错误:
error LNK2019: 无法解析的外部符号 _WinMain@16,在函数tmainCRTStartup中引用 fatal error LNK1120: 1 个无法解析的外部
目前为止,我已经完成了以下工作:
我创建了一个新的Win32项目,选择了dll和空项目。然后将所有h和cpp文件复制到目录中,并添加到项目中。
此外,我添加了一个名为"DllMain.cpp"的文件,其中包含以下代码:
#include <windows.h>

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

4
由于某些原因,该项目被配置为构建.exe文件。
但您可以轻松修复您的项目。打开属性对话框并进入“配置属性/常规”选项卡。在右边找到“配置类型”选项,并将其从“应用程序”更改为“动态库”。
还要记住,您需要在所有配置(即Debug和Release)中进行更改。

3
当您创建新的Win32应用程序项目时,在向导中选择“应用程序设置”,并选择应用程序类型为“DLL”。它将以一个空的DllMain开始。
您说您已经这样做了,但它不应该再寻找WinMain。为了确认您确实正在构建一个DLL,请查看项目设置->常规,并检查以下内容:
1. “配置类型”为“动态链接库(.dll)” 2. MFC的使用设置为“使用标准Windows库” 3. ATL的使用设置为“不使用ATL”

有趣的是,由于某种原因配置类型被设置为“.exe”。我确定我选择了dll,但这可能只是我的错误。无论如何,现在我能够编译它了,谢谢! - Pedro

1

我没有使用任何额外的依赖项,我已经检查过了。我会看一下这个链接,谢谢。 - Pedro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接