Visual studio 将混合模式应用程序项目(.exe)转换为混合模式动态库(.dll) 我有一个包含本地和托管C++代码的项目。 其运行时支持设置为/clr。 它的配置类型过去被设置为Application,以便编译为.exe。这一切都很好。 但现在我想将此项目用作另一个项目的library.dll。 因此,我将配置类型更改为DynamicLibrary,并将主函数重命名为其他函数。 然后重建项目会出现以下两个错误 Error 2 error LNK1120: 1 unresolved externals C:\Projects\MyProject\Source\Debug\MyProject.dll MyProject Error 1 error LNK2001: unresolved external symbol _main C:\Projects\MyProject\Source\CppSource\LINK MyProject

Visual studio 将混合模式应用程序项目(.exe)转换为混合模式动态库(.dll) 我有一个包含本地和托管C++代码的项目。 其运行时支持设置为/clr。 它的配置类型过去被设置为Application,以便编译为.exe。这一切都很好。 但现在我想将此项目用作另一个项目的library.dll。 因此,我将配置类型更改为DynamicLibrary,并将主函数重命名为其他函数。 然后重建项目会出现以下两个错误 Error 2 error LNK1120: 1 unresolved externals C:\Projects\MyProject\Source\Debug\MyProject.dll MyProject Error 1 error LNK2001: unresolved external symbol _main C:\Projects\MyProject\Source\CppSource\LINK MyProject,visual-studio,dll,c++-cli,mixed-mode,Visual Studio,Dll,C++ Cli,Mixed Mode,相应的输出如下所示 1>------ Build started: Project: MyProject, Configuration: Debug Win32 ------ 1> Main.cpp 1>LINK : error LNK2001: unresolved external symbol _main 1>C:\Projects\MyProject\Source\Debug\MyProject.dll : fatal error LNK1120: 1 unre

相应的输出如下所示

1>------ Build started: Project: MyProject, Configuration: Debug Win32 ------
1>  Main.cpp
1>LINK : error LNK2001: unresolved external symbol _main
1>C:\Projects\MyProject\Source\Debug\MyProject.dll : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我忘了什么吗?

正如Hans Passant所建议的,入口点设置必须为空


这个答案的存在主要是为了能够将此帖子标记为已解决。

请参阅此处的帮助。您指的是特定部分吗?这似乎是混合模式的一般指南。这个问题是专门针对从exe项目创建dll的。很难想象会出现什么问题,当我尝试它时,它可以轻松工作。确保更改所有配置的配置类型。然后检查Linker>Advanced>Entry Point设置,它应该是空的。Entry Point设置似乎成功了。谢谢你的提示!嗯,这不是一个很有用的答案。至少解释一下这个设置是如何以错误的值结束的,这样其他程序员就可以避免落入同样的陷阱。我自己也不确定。该值被设置为main,它实际上曾经是入口点。这个值可能是在将本机代码移植到托管代码的过程中显式设置的。