【问题标题】:Convert a mixed mode application project (.exe) to a mixed mode dynamic library (.dll)将混合模式应用程序项目 (.exe) 转换为混合模式动态库 (.dll)
【发布时间】:2016-01-14 00:19:40
【问题描述】:

我有一个同时包含本机和托管 C++ 代码的项目。 它的运行时支持设置为/clr。 它的配置类型曾经设置为Application,因此它编译为.exe。这一切都很好。 但现在我想将此项目用作另一个项目的库(.dll)。 所以我将配置类型更改为动态库并将main() 函数重命名为其他名称。 然后重建项目会出现以下两个错误。

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

对应的输出如下。

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 ==========

我是不是忘记了什么?

【问题讨论】:

  • 在这里查看一些帮助C++/CLI and mixed mode programming
  • 您指的是特定的部分吗?这似乎是混合模式的一般指南。这个问题专门针对从 exe 项目创建 dll。
  • 很难想象出了什么问题,当我尝试它时,这很容易。请务必更改 all 配置的配置类型。并检查 Linker > Advanced > Entry Point 设置,它应该是空白的。
  • 入口点设置似乎成功了。非常感谢您的提示!

标签: visual-studio dll c++-cli mixed-mode


【解决方案1】:

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

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

【讨论】:

  • 嗯,这不是一个非常有用的答案。至少解释一下这个设置是如何最终得到错误的值的,这样其他程序员就可以避免落入同样的陷阱。
  • 我自己也不确定。该值设置为main,它确实曾经是入口点。也许这个值是在将本机代码移植到托管代码的过程中显式设置的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 2020-12-25
  • 1970-01-01
  • 2011-02-11
相关资源
最近更新 更多