2015-04-02 22 views
2

我想創建一個靜態庫,希望創建一個可移植的可執行文件。我成功地使用下面的教程構建動態庫:在Windows 8中使用TDM-GCC-64,Cmake和CodeBlocks構建OpenCV靜態庫時出錯

https://zahidhasan.wordpress.com/2013/02/16/how-to-install-opencv-on-windows-7-64bit-using-mingw-64-and-codeblocks/

我基本上是重複的過程,但隨着BUILD_SHARED_LIBS = OFF。

我內置CodeBlocks,並且失敗。我得到的構建消息是以下的一系列變體(在d00xxxxxx中變化):

C:\ TDM-GCC-64 \ bin .. \ lib \ gcc \ x86_64-w64-mingw32 \ 4.9.2 \的libstdC++。dll.a(d002386.o)||首先在此處定義|

生成日誌示出了:

C:/ TDM-GCC-64/bin中/../ LIB/GCC/x86_64的-W64-的mingw32/4.9.2 \的libstdC++一個(sstream-inst.o ):sstream-inst.cc :(文本$ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev [_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev] +爲0x0):std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream()' C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/libstdc++.dll.a(d002386.o):(.text+0x0): first defined here C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2\libstdc++.a(sstream-inst.o):sstream-inst.cc:(.text$_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv[_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv]+0x0): multiple definition of的std ::的basic_stringbuf,性病::分配器的多個定義> :: STR()const的」 C:/ TDM-GCC-64 /bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/libstdc++.dll.a(d000413.o):(.text+0x0):首先在這裏定義

這兩個都重複最大允許的50個錯誤。

任何幫助將不勝感激。

+0

我會嘗試從一個乾淨的構建目錄開始,並從一開始就激活靜態庫構建:您的問題可能是由動態庫構建過程的一些剩餘部分引起的。 – Antonio 2015-04-02 21:24:18

+0

如果不清楚,我很抱歉。我已經做到了。我也嘗試使用mingw32-make而不是使用代碼塊來從命令行構建。它看起來也在嘗試構建編譯器庫,特別是'libstdC++'。這是正常的嗎? – Langleson 2015-04-02 21:28:11

+0

它看起來像一個編譯器/鏈接器錯誤...我在哪裏下載它? – Antonio 2015-04-02 21:40:15

回答

0

它看起來像一個編譯器/連接錯誤,我...

你可以嘗試工具鏈提供here。 (注意:這個鏈接可能很快就會過時,所以通常使用下面的鏈接並瀏覽到最新版本)

而且一般在http://sourceforge.net/projects/mingw-w64/files/,您還可以找到工具鏈,目標是32位體系結構。

+0

謝謝。這正是我所做的,它的工作。 Mingw64的TDM版本似乎有缺陷。我已經成功創建了靜態庫,現在遇到了未定義引用的問題。 – Langleson 2015-04-03 19:27:01

+0

@Langleson如果您對答案滿意,請檢查[如何接受](http://meta.stackexchange.com/a/5235/225842)。 – Antonio 2015-04-04 20:51:11