2008-08-13 80 views
1

我將.NET支持集成到我們的C++應用程序中。
這是一個老派的MFC應用程序,其中1個額外的文件使用引用CWinFormsControl的「/ clr」選項編譯。我需要哪些庫將我的混合模式應用程序鏈接到?

我不允許刪除鏈接標誌「/ NODEFAULTLIB」。
(我們有我們自己的構建管理系統,而不是Visual Studio的。)
這意味着我必須指定所有必需的庫:VC運行庫和MFC。

其他編譯器選項包括「/ MD」

下一頁到:我不能使用鏈接標誌「/ FORCE:多」,只是添加一切
我在尋找一個非 - 重疊庫的集合。

回答

1

我如何解決它:

  1. 用 「/ FORCE:多/詳細」 鏈接(鏈接確定),並設定輸出放在一邊。
  2. 鏈路與「/ NODEFAULTIB /詳細」和跟蹤在先前步驟中的輸出的所有unresolveds和由1
  3. 添加庫1這導致雙:「AAA.lib:XXX已經在BBB.lib定義「
  4. 後來我終於明白了: 重新編譯管理,並與/ MD 非託管單位,並鏈接到(其中包括): mscoree.lib msvcmrt.lib mfcm80d.lib

混合/ MT(非託管)和/ MD(託管)結果是不好主意: 需要不同的(重疊)庫。

@ajryan:Dependcy Walker只告訴我使用了什麼dll,而不是連接時鏈接的庫。 (例如msvcmrt.lib?) 我想。

感謝您的答案!

1月

1

作爲最低限度:

mscoree.lib MSVCRT.LIB mfc90.lib(調整版本適當)

從那裏重複。

1

使用應用程序嚮導以您的風格(SDI/MDI /對話框)創建一個基本的MFC應用程序,然後使用put on your depends

相關問題