2011-05-26 57 views
0

我正在創建混合模式C++程序集。程序集包含指向C++非託管類型的指針,所有類都是C++/CLI類型。/CLR選項忽略混合裝配

我有選項/ clr。但是,每當我生成DLL我得到警告:

warning LNK4044: unrecognized option '/clr'; ignored 

此警告沒有意義,我彷彿我打開/關閉CLR它顯然不能被編譯爲本地C++代碼。那麼,/ clr選項如何被無法識別和忽略?

回答

3

/clr是一個編譯器標誌,而不是鏈接器標誌。 (事實上​​,你得到一個LNK????錯誤表明你試圖通過這個標誌鏈接器。)

+0

我只根據@ Juba的評論更改了設置。所以我不確定爲什麼它會傳遞給鏈接器? – Seth 2011-05-29 23:59:15

+0

@Seth:我也是。也許在這裏發佈你的項目文件的內容,這樣我們可以看看它。 (這只是XML,將其格式化爲代碼。) – ildjarn 2011-05-30 01:22:55

+0

Found/clr作爲鏈接器中的附加選項。老實說不知道它是如何到達那裏的。我已經在.vcproj文件中刪除它,並且都很好。 – Seth 2011-05-30 04:32:29

0

如果你是從Visual Studio內部工作,那麼你所要做的就是右鍵單擊該項目和「配置屬性」 - >「常規」。然後在項目詳細信息的右側,將「公共語言運行時支持」設置爲「公共語言運行時支持(/ clr)」。這將創建一個混合模式的C++項目。

這不會將/ clr標誌添加到鏈接器。