C++ MSVS 2015构建dll-MSVCRTD.lib(exe_main.obj)中调用_main中未解析的外部符号_main

C++ MSVS 2015构建dll-MSVCRTD.lib(exe_main.obj)中调用_main中未解析的外部符号_main,c++,visual-studio,dll,visual-studio-2015,main,C++,Visual Studio,Dll,Visual Studio 2015,Main,我想编译一个DLL并在我的项目中使用它。(它必须是一个DLL,因为我使用的是Windows挂钩,它必须在运行时加载)。更多信息,它使用Nuget的Allegro 5 当我尝试构建DLL时,出现以下错误: LNK2019 unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) in file MSVCRTD.lib (exe_main.

我想编译一个DLL并在我的项目中使用它。(它必须是一个DLL,因为我使用的是Windows挂钩,它必须在运行时加载)。更多信息,它使用Nuget的Allegro 5

当我尝试构建DLL时,出现以下错误:

LNK2019 unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) in file MSVCRTD.lib (exe_main.obj)
由于配置问题,我已经多次重新创建该项目。我最近的一次迭代是使用多线程调试DLL运行时构建Win32窗口应用程序和DLL-我尝试了所有其他选项,其余的工作都没有

我不明白它为什么要搜索main:它是一个DLL。我还没有提供DLLMain,因为我知道这是不必要的,因为MSV将为您提供它

在尝试编译DLL时,如何解决此生成问题

编辑
解决办法是定义快板、魔术和主音。Allegro库需要一个main函数,除非您定义Allegro_NO_MAGIC_main。问题解决。

解决方案是在包含ALLEGRO 5标题之前定义ALLEGRO_NO_MAGIC_MAIN。Allegro希望看到一个main函数,这就是链接器寻找它的原因。

解决方案是在包含Allegro 5头之前定义Allegro\u NO\u MAGIC\u main。Allegro希望看到一个main函数,这就是链接器查找它的原因。

它可能正在查找main函数,因为配置中有问题。Main是exe所必需的,并且在构建中有一些东西使它想要构建exe,尽管您想要构建dll。如果您使用的是Visual Studio,请使用向导设置dll项目,然后将设置与您的设置进行比较。我已经使用它创建了dll项目。它不起作用。我不知道你要我做什么。我创建了一个新项目,选择Win32应用程序,点击next,选择DLL项目,然后说ok。未生成。设置使用Windows子系统,配置类型为DLL。它仍然需要_main。我理解你的沮丧,这些链接器错误可能是一个真正的痛苦来解决。即使向导生成的项目为空,生成是否也会失败?项目中是否定义了
\u DLL
?如果向导生成的空项目失败,您的安装可能会以某种方式中断…我找到了解决方案。Allegro需要一个主要功能。我需要给快板下定义。我在尝试了一个测试dll项目后发现了这一点。这样做没有问题,所以我知道是我的代码导致了问题。它可能正在寻找一个main,因为配置中有问题。Main是exe所必需的,并且在构建中有一些东西使它想要构建exe,尽管您想要构建dll。如果您使用的是Visual Studio,请使用向导设置dll项目,然后将设置与您的设置进行比较。我已经使用它创建了dll项目。它不起作用。我不知道你要我做什么。我创建了一个新项目,选择Win32应用程序,点击next,选择DLL项目,然后说ok。未生成。设置使用Windows子系统,配置类型为DLL。它仍然需要_main。我理解你的沮丧,这些链接器错误可能是一个真正的痛苦来解决。即使向导生成的项目为空,生成是否也会失败?项目中是否定义了
\u DLL
?如果向导生成的空项目失败,您的安装可能会以某种方式中断…我找到了解决方案。Allegro需要一个主要功能。我需要给快板下定义。我在尝试了一个测试dll项目后发现了这一点。这没有问题,所以我知道是我的代码导致了问题。