您的位置:首页 > 其它

OSG新手使用过程中可能遇到的坑

2017-03-24 14:39 190 查看
(说明:其实这篇博文内容跟OSG关系不大,更确切的说是在使用Visual Studio的过程中可能遇到的坑。由于OSG编译的过程中会依赖很多第三方库,还有Debug和Release版本,确实很容易动态链接异常,这是本人在编译OSG程序的过程中遇到的真实问题,故还是放在OSG类别中了,希望对新手有用,高手绕行!)

1.编译“error LNK2005”错误:
error LNK2005: "public: __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::basic_ofstream<char,struct std::char_traits<char> >(void)" (??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ)
已经在 Zip_Application.obj 中定义(osg55-osgDBd.dll)




解决办法:在属性->链接器->命令行,最下面的“其他选项”框中加入命令"/FORCE:MULTIPLE " ,即将Visual Studio2010的STL从import变成static.



2. 编译“error LNK2019”错误:
error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall std::basic_ifstream<char,struct std::char_traits<char> >::`vbase destructor'(void)" (__imp_??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ),该符号在函数 "public: void __thiscall Model::loading(void)" (?loading@Model@@QAEXXZ) 中被引用
解决方法:这个错误是由于我们当前的编译环境是VS2010,但是动态链接的有些库不是VS2010编译造成的,重新在VS2010编译就OK了。

3.运行编译好的OSG应用程序时可能碰到这种情况:应用程序无法正常启动(0xc0150002)。请单击“确定”关闭应用程序。



解决方法:我们可利用Dependency Walker这个软件来查看到底哪些动态链接库不匹配,如下就是我的程序是VS2010编译的,但是动态链接的有些库是VS2005编译的,重新在VS2010编译就OK了。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息