Visual Studio 2005項目中的什麼設置可能導致構建不將/ dll參數添加到鏈接器命令行?Visual C++ 2005不會爲鏈接器添加/ dll參數
背景:
我們有我移植到VC 2005年該項目包含了一些MFC擴展DLL的大VC6的項目,我運行到下面的連接器警告,當我運行構建:
警告LNK4086:入口點'_WinMainCRTStartup'不是帶有12字節參數的__stdcall;圖像可能無法運行
對_WinMainCRTStartup的引用是高度可疑的,因爲這是一個DLL(它根本不應該有_WinMainCRTStartup函數)。搜索源代碼表明沒有定義這樣的函數,所以我的結論是它由鏈接器提供給我們。
審查的linker.exe命令行參數說明問題了(我已經刪除完整路徑爲簡潔起見):
/OUT:"Debug\thedll.dll「/增量/清單/ manifest資源配置文件:」調試\ thedll.dll.intermediate.manifest「/DEF:".\thedll.def」/ DEBUG /PDB:"\Debug\thedll.pdb「/ SUBSYSTEM:WINDOWS/MACHINE:X86 version.lib
有一個非常關鍵的命令行參數丟失:/ DLL
如果我手動添加此參數(使用項目屬性,配置屬性\鏈接器\命令行設置),我可以編譯的東西正常。
但我想知道項目配置中的什麼導致linker.exe的/ DLL命令行設置被遺漏?
我已經創建了一個擴展DLL的臨時項目,並且我已經完成了對.vcproj文件的並排比較,但是我看不到任何會影響此設置的特定設置。
編輯 - 我檢查了Configuration Properties的Configuration Properties \ General \ Project Defaults設置。它設置爲動態庫(.dll)
編輯2 - 顯然,VS忽略了設置,直到我手動調整它。 rggggg
0123更多關於此問題的想法 - 其中是什麼導致鏈接器/ ICREMENTAL標誌被包含在調試配置中但在發佈配置中被排除的設置?也許我的問題是在同一個地方... – 2009-08-19 20:28:08
有線我現在在同一個問題,現在我們仍然保持VS2005項目之一。最後它解決了它自己,我希望我能弄清楚它爲什麼會這樣做(我懷疑與pch有關)。 – dashesy 2012-09-12 22:44:02