2015-10-15 74 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',這確實是入口點。也許這個值是在將本地代碼移植到託管代碼的過程中明確設置的。 –