2010-07-14 28 views
-1

當我鏈接到發佈/下一個,有一個致命的錯誤:C/C中的Debug /和Release /目錄下的libs有什麼區別?

LINK : fatal error LNK1146: no argument specified with option '/machine:' 

然後我試圖Debug/下鏈接到.lib這一次,它的工作原理。

但是有什麼不同呢?

+0

該錯誤似乎表明連接器的命令行生成出現問題。命令行在項目設置 - >配置屬性 - >鏈接器 - >命令行下看起來如何? (用於發佈模式)。在我的有一個選項像'/ MACHINE:X86'。 – Cogwheel 2010-07-14 16:04:32

回答

2

通常,在優化發佈程序集時,不會對調試程序集進行優化。調試程序集通常也會包含類似源文件行號的垃圾文件。

+0

但是爲什麼編譯失敗與釋放庫? – ieplugin 2010-07-14 15:59:38

+0

@ieplugin:錯誤看起來像是你在命令行上犯了一個錯字,而不是該庫與它有任何關係。 – 2010-07-14 16:05:55

0

您可能希望單獨更改調試版本和發行版本的構建配置。

1

這實際上不是C問題;它涉及到使用的平臺。

通常情況下,將設置一個項目/解決方案來創建一個用於調試的版本和一個用於發佈的版本,並將它們放入Debug /和Release /目錄是區分的常用方法。調試版本通常編譯速度很快,運行速度較慢,幷包含將內部執行與源代碼鏈接的信息(如行號和變量名稱)。發佈版本通常編譯速度較慢,運行速度較快,並且要跟蹤內部發生的情況要困難得多。

顯然,如果只有適當的編譯器標誌,調試版本和發行版本之間必須存在差異。但是,在我熟悉的構建系統中,可以進行任意其他更改,有時這會導致僅發佈版本的錯誤,這很痛苦。或者,如果C代碼沒有正確指定行爲,則調試版本和發行版本可能會對它進行不同的解釋,這也是一種痛苦。

在這種情況下,我猜測它們的構建方式有所不同。沒有更多信息,我無法進一步評論。

什麼是操作系統?什麼是C編譯器使用?你使用什麼構建系統(如果你使用的是IDE,可能是IDE的一個標準)?什麼是你使用的圖書館。您的組織是否構建它,還是從外部獲取?瞭解這些事情會讓我們知道從哪裏開始尋找。

相關問題