我試圖使用xlsLib從C++應用程序創建Excel電子表格。從MinGW靜態庫(.a)到Visual Studio靜態庫(.lib)
問題是,編譯xlsLib,我給了一個.a文件(一個GCC靜態庫,由MinGW生成)。但是,我的應用程序依賴於僅與Visual Studio一起編譯的另一個API(PhysX
)。
因此:是否有可能將GCC靜態庫(xlslib.a
)轉換爲Visual Studio靜態庫文件(xlslib.lib
)?
我試圖使用xlsLib從C++應用程序創建Excel電子表格。從MinGW靜態庫(.a)到Visual Studio靜態庫(.lib)
問題是,編譯xlsLib,我給了一個.a文件(一個GCC靜態庫,由MinGW生成)。但是,我的應用程序依賴於僅與Visual Studio一起編譯的另一個API(PhysX
)。
因此:是否有可能將GCC靜態庫(xlslib.a
)轉換爲Visual Studio靜態庫文件(xlslib.lib
)?
據我所知,它們是一樣的東西。 Visual Studio的.lib
文件也是ar
包含目標文件的檔案。你嘗試重命名文件嗎? :)
這裏有兩個資源,我發現有用:
[剪斷,錯誤的鏈接]
http://old.nabble.com/using-VC%2B%2B-.lib-with-mingw-td23151303.html
編輯。我無法找到我正在尋找的鏈接。與此同時,檢查這一個:http://www.willus.com/mingw/yongweiwu_stdcall.html
使用MinGW生成的靜態庫的檔案通常與Visual C++編譯器/鏈接器兼容。所以,你應該能夠直接通過添加.a
文件鏈接器輸入你的項目屬性在Visual Studio中使用它們:
Properties
(ALT-F7)。.a
檔案的開放Configuration Properties->Linker->Input
libgcc.a
庫此外,關於混合的C有可能發生的問題運行時庫properties of C/C++->Code Generation->Runtime Library
,但這取決於您使用MinGW的構建配置。有時需要與MinGW的libmsvcrt.a
鏈接,但在許多情況下(如果不是大多數情況下)會導致問題。據我所知,最後,這種混合的MinGW和Visual C++鏈接通常適用於C模塊,但它不適用於C++。
但使用.a導致我的.exe無法調試「無法找到調試信息」。 – onmyway133 2013-05-22 12:27:28
@ onmyway133檢查調試符號是否仍然存在。您可以使用例如'nm --debug-syms',如果二進制文件被刪除,它就會顯示«no symbols»。 – 2014-08-29 16:09:45
添加libgcc.a對我很重要 – meolic 2015-04-15 13:07:41
但使用.a導致我的.exe無法調試「無法找到調試信息」。 - 熵5月22日12:27
這是因爲.a庫不包括調試所需的調試信息。如果你想調試它,你需要告訴編譯器在編譯時添加調試信息。 (MinGW版本),你需要在運行「make
」添加「-g
」到CFLAGS,像「make CFLAGS="-g"
」
不,這不是那麼簡單,實際的歸檔格式稍有不同。 – laura 2010-01-19 19:52:55
我相信還有一個工具lib.exe隨Visual Studio一起提供。使用.def文件可以將.a轉換爲.lib。 – jiggunjer 2015-10-19 16:23:03