• 本站域名:OceanCoder.cn 若您喜欢本站,请添加至收藏夹!
  • 网站少部分资源来源自网络,如有侵犯您的权益,请联系站长删除!
  • 本站所有文章,除特殊标明外,皆为本人原创,转载请注明出处,谢谢合作!
  • 本站所下载的资源,若无特殊说明,使用统一解压密码:oceancoder.cn
  • 本站已实现布局自适应,支持手机端、pad端访问,欢迎体验
  • 本站部分资源可通过微信公众号留言获取,欢迎体验

[OpenSceneGraph学习笔记-C001]#VS2019环境,使用C++/CLI封装dll供C#调用

C++ OceanCoder 2020-04-09 4501 次浏览 0个评论

一、osg环境

osg3.4.0版本

64位

使用VS2015编译的库


编程使用VS2019环境


二、封装dll步骤

1、新建CLR空项目(.net framwork),此处注意不是.net core版本,建议选择.net framework 3.5框架,此处框架近可能选择低一点,否则后期调用容易出错

2、新建头文件mytest.h

#pragma once
#include<osgViewer/Viewer>
#include<osgDB/ReadFile>
#include<osgViewer/ViewerEventHandlers>
#include<osgGA/StateSetManipulator>
#include<osg/Material>
#include<osg/Light>
#include<osg/LightSource>
namespace mytest {
public ref class View {
public:
int setSceneData();
};
}

3、新建源文件mytest.cpp

#include "mytest.h"
int::mytest::View::setSceneData()
{
osgViewer::Viewer* viewer = new osgViewer::Viewer;
osg::Group* group = new osg::Group;
group->addChild(osgDB::readNodeFile("cow.osg"));
viewer->setSceneData(group);
return viewer->run();
}

4、右键项目-属性(接下来是osg的常用配置,以下配置根据osg版本选择平台,本文是64位osg,所以配置X64平台)

(1)VC++目录,录入osg的包含目录和库目录

(2)C/C++,预处理-预处理器定义-添加 WIN32; 此处务必添加,否则生成失败

(3)链接器-输入-附加依赖项,输入

OpenThreadsd.lib 
osgd.lib 
osgDBd.lib 
osgUtild.lib 
osgGAd.lib 
osgViewerd.lib 
osgTextd.lib

(4)常规-配置类型,选择动态库(.dll)

(5)OK,生成dll文件


5、新建C#控制台程序,建议选择.net framework4.5版本及以上,否则报错(据说此处的版本必须高于C++/CLI项目的版本)。添加引用上步dll,入口文件Process.cs文件添加下列代码,注意引用命名空间

View view = new View();
view.setSceneData();

6、生成,结束。





已有 4501 位网友参与,快来吐槽:

发表评论