关于在工程中多次包含库文件引发的问题
2009-09-03 22:11
267 查看
问题描述:
新工程中使用了tsGUI的静态库,这是一个类似于OpenCV的HighGUI的可以快速的在界面上显示调试信息的库。
内部使用了std::string类。 因为使用了std::string, 导致该tsGUI的debug版本仅能用于debug项目,release版本同样仅能用于release项目。这是之前就得出的基本结论。
新项目中,是这样包含tsGUI库的
#ifdefine _DEBUG
#pragma comment(lib, "tsGUI_d.lib") // debug版
#else
#pragma comment(lib, "tsGUI.lib") //release版
#endif
可是工程运行总是崩溃。。总是在tsPutText处崩溃。头疼啊。
问题解决:
分析了下,虽然调用了tsGUI里面的tsNamedWindow, tsResizeWindow等函数,但都没有崩,仅在tsPutText处崩,相比tsPutText里面用了std::string, 查看源码,果然
void tsPutText( const char* szTitleName, int x, int y, const char* szText, DWORD dwColor )
{
...
PaintRecord pr;
pr.strText = szText; // strText是个std::string类型
...
}
看来问题还是跟std::string的debug和release版本相关。
然后就在工程中搜索tsGUI
发现,在另外一个cpp文件里,没有使用_DEBUG开关而直接包含了 tsGUI.lib库。
原来,编译器在第一次引入tsGUI库的时候,在另一个文件里发现了tsGUI.lib库,就先行把其链接了进来,当后来再发现tsGUI_d.lib库的时候,发现已经有tsGUI.lib可以满足要求了,就忽略了tsGUI_d.lib. 这导致了我的debug工程链接了release版的tsGUI.lib
问题解决。
新工程中使用了tsGUI的静态库,这是一个类似于OpenCV的HighGUI的可以快速的在界面上显示调试信息的库。
内部使用了std::string类。 因为使用了std::string, 导致该tsGUI的debug版本仅能用于debug项目,release版本同样仅能用于release项目。这是之前就得出的基本结论。
新项目中,是这样包含tsGUI库的
#ifdefine _DEBUG
#pragma comment(lib, "tsGUI_d.lib") // debug版
#else
#pragma comment(lib, "tsGUI.lib") //release版
#endif
可是工程运行总是崩溃。。总是在tsPutText处崩溃。头疼啊。
问题解决:
分析了下,虽然调用了tsGUI里面的tsNamedWindow, tsResizeWindow等函数,但都没有崩,仅在tsPutText处崩,相比tsPutText里面用了std::string, 查看源码,果然
void tsPutText( const char* szTitleName, int x, int y, const char* szText, DWORD dwColor )
{
...
PaintRecord pr;
pr.strText = szText; // strText是个std::string类型
...
}
看来问题还是跟std::string的debug和release版本相关。
然后就在工程中搜索tsGUI
发现,在另外一个cpp文件里,没有使用_DEBUG开关而直接包含了 tsGUI.lib库。
原来,编译器在第一次引入tsGUI库的时候,在另一个文件里发现了tsGUI.lib库,就先行把其链接了进来,当后来再发现tsGUI_d.lib库的时候,发现已经有tsGUI.lib可以满足要求了,就忽略了tsGUI_d.lib. 这导致了我的debug工程链接了release版的tsGUI.lib
问题解决。
相关文章推荐
- 头文件互相包含所引发的的问题(深入剖析)
- C/C++ 中头文件相互包含引发的问题
- C/C++ 中头文件相互包含引发的问题
- 关于建立Android工程R文件丢失的问题
- 关于通过vmware安装windows8的几个问题及解决--无人参与应答文件包含的产品密钥无效
- 关于JSP不能通过浏览器直接访问,要通过servlet跳转,但一个jsp文件里面用<iframe>标签包含了另一个jsp的访问问题
- 关于vc工程包含多个lib库老是提示无法打开问题
- 关于STM32头文件包含出现No such file or directory和 invalid redeclaration of type name...的问题
- 关于头文件重复包含以及函数重定义问题
- 关于前置声明与C++中头文件相互包含的几点问题
- 关于在idea中建立scala工程无法new scala文件的问题
- C/C++ 中头文件相互包含引发的问题
- 关于C++的头文件互相包含的问题
- 关于django 工程创建找不到 django-admin.py 文件问题
- 包含arxHeader.h的工程中调用了标准fstream, sstream, iosteam等引发链接问题的解决方案
- 关于无法打开包含文件:“fstream.h” 的问题
- 关于头文件文件包含的问题
- C/C++ 中头文件相互包含引发的问题
- VS工程中如何在其它目录下的文件中包含stdafx.h的问题
- 关于导入SpringMVC工程时XML文件打叉叉的问题