2015-04-02 20 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