该程序使用OpenSceneGraph生成.osg文件。在Xcode中运行已编译的可执行文件给出了直接调用shell中的可执行文件的不同结果
int main(int, char**)
{
osg::ref_ptr<osg::Node> root = createSceneGraph();
if (!root.valid())
{
osg::notify(osg::FATAL) << "Failed in createSceneGraph()." << endl;
}
bool result = osgDB::writeNodeFile(*(root.get()), "Simple.osg");
if (!result)
{
osg::notify(osg::FATAL) << "Failed in osgDB::writeNode()." << endl;
}
}
代码摘录来自OpenSceneGraph的快速入门指南http://www.lulu.com/items/volume_51/767000/767629/3/print/OSGQSG.pdf 第40页
该程序可以编译和运行的XCode。 但是,它示出了以下错误:
Error writing file Simple.osg: Warning: Could not find plugin to
write nodes to file "Simple.osg".
Failed in osgDB::writeNode().
然而,编译的二进制可通过在将该罩体直接运行被执行无错误(./程序)以及该程序。正确地生成Simple.osg文件。
这不是故事的结束。这很可能是因为xcode调用编译程序与在shell中调用它不同。因此,我将两个依赖库复制并粘贴到编译二进制文件所在的目录中。
(在谁知道OSG的情况下,这两个库是osgdb_deprecated_osg.so和osgdb_osg.so)
这个时候,Xcode的正常运行没有错误的程序,生成Simple.osg文件。
因此,有两个问题。
1)为什么shell能够自动定位依赖库而Xcode不能?
2)如何使无需手动复制依赖库或通过邮寄编译复印选项的Xcode工作?
你能否详细说明如何在Xcode定制路径?我尝试编辑scheme-> arguments->环境变量,并将PATH和其他环境变量设置为与我为shell设置的完全相同,但仍然没有骰子。 – user2127480 2014-10-27 18:05:53