2013-11-14 174 views
4

我使用供應商提供的庫C++ program。所有供應商的供應是.lib, .dll and the header files.供應商如何提供C++庫支持多個編譯器?

該庫最早是在MSVC++ 6使用,現在MSVC 2010.

看樣子他們支持的MinGW,QT等我曾與在調試或發佈模式下使用它沒有問題。

我最近添加了另一個依賴項目yaml-cpp,這是一個沒有提供二進制文件的開源項目。我可以使用cmake和MSVC 2010作爲靜態庫來構建yaml-cpp,並且可以成功將它鏈接到我的項目。

爲了做到這一點我必須鏈接到調試發佈版本.lib分別爲我已經運行到怪異微軟CRT /連接器的問題,我只是學習的。

我很好奇,請問我的第一個庫(libXl如果你是好奇)的供應商提供.lib and .dll上一系列的編譯器的工作,而不必擔心CRT版本

你如何編寫允許這樣做的代碼還是鏈接過程? yaml-cpp是一個跨平臺庫,我能否以類似的方式編譯它,使我可以在我的項目中使用一個.lib文件?

我不確定尋找哪些資源來了解更多信息。人們如何學習這種東西?謝謝!

+0

據我所知,創建一個新的lib項目,所有的設置應該沒問題。有幾個開關可以像/ MT一樣更改,但除此之外都是標準的。如果你使用yaml和他們提供的項目,那麼他們可能會有一些遺留的編譯器開關,你應該嘗試爲該lib創建一個新項目。 – Raxvan

+1

如果該庫適用於MSVC++ 6和MSVC 2010,那麼很可能不是C++庫,而是一個C庫。 C++運行時庫對於每個MS版本都非常具體,並且據我所知不能混雜在一起。 –

回答

1

.lib和dll可以與各種編譯器一起工作的原因是確保代碼中沒有編譯器特定的依賴關係。 .lib和.dll不會重新編譯,因此一旦編譯完成,它們應該是獨立的,並且可以在任何地方使用.dll或.lib來訪問它們的功能。

關於dll和lib here的優缺點有一些討論,您可能會感興趣。

讓我知道你是否需要更多的信息,我會盡我所能。