2015-10-15 72 views
0

我有一个包含本地和托管C++代码的项目。 其运行时支持设置为/clr。 其配置类型曾被设置为Application,因此它编译为.exe。这工作一切正常。 但是现在我想将此项目用作另一个项目的库(.dll)。 因此,我将配置类型更改为动态库,并将main()函数重命名为其他内容。 然后重建项目给出以下两个错误。将混合模式应用程序项目(.exe)转换为混合模式动态库(.dll)

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

我在这里忘了什么吗?

+0

在这里看到一些帮助[C++/CLI和混合模式编程](http://blogs.msdn.com/b/abhinaba/archive/2012/11/14/c-cli-and-mixed-mode- programming.aspx) – lsalamon

+0

你是指特定的部分?这似乎是混合模式的一般指南。这个问题是特定于从一个EXE项目创建一个DLL。 –

+1

很难想象会出现什么问题,当我尝试使用时,这种方法没有麻烦。请务必更改* all *配置的配置类型。并检查链接器>高级>入口点设置,它应该是空白的。 –

回答

0

正如Hans Passant建议的那样,入口点设置必须是空白的。

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

+2

嗯,这不是一个非常有用的答案。至少解释这个设置是如何导致错误的值,以便其他程序员可以避免陷入同一陷阱。 –

+0

我不确定我自己。该值被设置为'main',这确实是入口点。也许这个值是在将本地代码移植到托管代码的过程中明确设置的。 –