【问题标题】:How to compile a c++ dll using visual studio?如何使用 Visual Studio 编译 C++ DLL?
【发布时间】:2011-10-08 01:00:30
【问题描述】:

我有一些想编译成 dll 文件的 c++ 类。当我尝试编译项目时,我收到一个未解决的外部符号错误:

  1. 错误 LNK2019:函数 tmainCRTStartup 中引用的未解析符号 _WinMain@16
  2. 致命错误 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;
}

【问题讨论】:

    标签: c++ visual-studio dll compilation


    【解决方案1】:

    由于某种原因,该项目被配置为构建一个 .exe。

    但是您可以轻松地修复您的项目。打开属性对话框并转到“配置属性/常规”。在右侧找到“配置类型”项并将其从“应用程序”更改为“动态库”。

    还请记住,您需要在所有配置(即调试和发布)上更改此设置。

    【讨论】:

      【解决方案2】:

      当你创建一个新的 Win32 应用程序项目时,在向导中选择“应用程序设置”,应用程序类型选择“DLL”。它将以空的DllMain 开头。

      你说你做了这个,但它不应该在寻找WinMain。要仔细检查您是否真的在构建 DLL,请查看项目设置 -> 常规,然后检查:

      1. “配置类型”为“动态库 (.dll)”
      2. 使用 MFC 设置为“使用标准 Windows 库”
      3. 使用 ATL 是“不使用 ATL”

      【讨论】:

      • 有趣.. 出于某种原因,配置类型设置为“.exe”。我绝对确定我选择了 dll,但这可能只是我的错。无论如何,现在我可以编译它了,谢谢!
      【解决方案3】:

      此链接可以帮助您http://msdn.microsoft.com/en-us/library/799kze2z(v=vs.80).aspx 还检查项目属性对话框中的链接器设置。如果您使用其他库,请确保在链接器选项卡中设置它们的路径。

      【讨论】:

      • 我不使用任何额外的依赖项,我已经检查过了。我去看看链接,谢谢。
      猜你喜欢
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      相关资源
      最近更新 更多