|
本帖最后由 hustlab 于 2013-5-5 19:37 编辑
我遇到这样一个问题:
在我的电脑中使用OSG+win7+VS2008开发一个C++/CLI的程序,能运行得到结果,可是将可执行文件和所需要的库,dll等拷贝到另一台电脑上运行出现错误。
根据提示是“System.NullReferenceException: 未将对象引用设置到对象的实例。”异常,我查看一下osg书,也没有发现解决办法,希望斑竹帮忙看看如何解决?
我在程序中这样使用nodeVisitor,CMyNodeVisitor类是flysky书上的例子。
//自定义节点访问器 .h 文件如下:
class CMyNodeVisitor : public osg::NodeVisitor
{
private:
std::string m_NameToFind; //需要查找的节点的名字
osg::Node* m_NodeToFind; //查找得到的节点
public:
CMyNodeVisitor();
~CMyNodeVisitor();
void setNameToFind(const std::string& str); //设置要查找节点的名字
osg::Node* getFindNode(); //返回查找得到的节点
//重载apply方法
virtual void apply(osg::Node& searchNode);
virtual void apply(osg::Geode& searchNode);//要查geode节点
virtual void apply(osg:ositionAttitudeTransform& searchNode);
};
程序中这样使用:
CMyNodeVisitor nodeVisitor;//是不是这样得不得对象的实例呢?
nodeVisitor.setNameToFind("节点名字");
gateNode->accept(nodeVisitor);
在其他电脑上运行的详细错误如下:
有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。
************** 异常文本 **************
System.NullReferenceException: 未将对象引用设置到对象的实例。
在 CMyNodeVisitor.apply(CMyNodeVisitor* , Geode* searchNode)
在 osg.NodeVisitor.traverse(NodeVisitor* , Node* )
在 CMyNodeVisitor.apply(CMyNodeVisitor* , Node* searchNode)
在 osg.NodeVisitor.traverse(NodeVisitor* , Node* )
在 CMyNodeVisitor.apply(CMyNodeVisitor* , Node* searchNode)
在 eastLakeSimulation.Form1.loadScene()
在 eastLakeSimulation.Form1.Form1_Load(Object sender, EventArgs e)
在 System.Windows.Forms.Form.OnLoad(EventArgs e)
在 System.Windows.Forms.Form.OnCreateControl()
在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
在 System.Windows.Forms.Control.CreateControl()
在 System.Windows.Forms.Control.WmShowWindow(Message& m)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
在 System.Windows.Forms.ContainerControl.WndProc(Message& m)
在 System.Windows.Forms.Form.WmShowWindow(Message& m)
在 System.Windows.Forms.Form.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
|
|