c# 调 C++ (C) 在unity3d中
来源:互联网 发布:程序员自我评价怎么写 编辑:程序博客网 时间:2024/04/30 09:54
#define _DLLExport __declspec (dllexport)
extern “C” int _DLLExport MyADD(int x,int y);
////////////////// DLL.cpp ////////////////////////////
//加载头文件
#include “DLL.h”
//设置函数
int _DLLExport MyADD(int x,int y)
{ return x+y; }
//这个DLL文件放在你的Unity工程的assert的Plugins
/////////////////// C# /////////////////////////////
public class UserClass:MonoBehaviour
{
[DllImport("DLL")]
public static extern void MyADD(int x,int y) ;
}
Unity3d-在Unity项目中使用Mono DLL(动态链接库)
最近研究了下Unity对Dll的调用。查了一些资料,总结如下。
为什么要用DLL?
答:
1:你选择用来开发的编程语言并不被Unity支持(如 F#),这个时候你就可以考虑把这样的代码编译成DLL文件。
2:你并不想让代码公开,只是想提供调用接口,那么DLL是一个很好的选择。
怎么做?
答:回答这个问题,首先要解决“怎么创建Unity3d 支持的DLL”和“Unity3D要怎么使用DLL.”
1. 创建Unity3d支持的DLL
(1)选择合适的编译器(因为Unity并不能确保支持所有编译器编译的.Net代码)。
如:MonoDevelop Visual Studio
(2)确定代码是否基于Unity的API。
如果DLL文件不包含基于Unity的API的代码,你仍然可以使用合适的编译选项把它编译成DLL文件。
如果你想使用Unity的API,则你需要在编译器中引用Unity的DLL,有两个分别是UnityEngine.dll和UnityEditor.dll。
Mac系统上Unity的DLLS路径一般是:
/Applications/Unity/Unity.app/Contents/Frameworks/Managed/
Windows系统中,DLLS能在Unity应用的安装文件夹中找到。路径一般是:
C:\Program Files(x86)\Unity\Editor\Data\Managed
最后,准确的编译DLL将取决于编译器的使用。
例:Mono C#编译器的命令行,在Mac系统上mcs可能像下面这样
mcs -r:/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll -target:library ClassesForDLL.cs
这里,-r指定了发布时被包含的库的路径,在这个例子中是UnityEngine的库。-target指定了发布时需要的文件;"library"被用于选着的发布一个DLL。最后,ClassForDLL.cs就是将要被编译的文件。 (假定这个文件是在当前工作目录,如果必要的话你可以指定文件使用的完整路径)。如果一切顺利,生成的DLL文件不久就会出现在源文件的同一文件夹下。
2. Unity3d使用DLL文件
一旦编译好,DLL文件就可以像其他资源一样被拖进Unity的工程里面。DLL资源上有个小三角形,用来揭示库里面单独的一些类。继承自MonoBehaviour类可以像普通的脚本拖到游戏对象上。Non-MonoBehaviour类可以以平时的方式直接在其他脚本中使用。
- c# 调 C++ (C) 在unity3d中
- Coroutines in Unity3d (C# version)----在unity3D中的协同(基于C#)
- 【C#】在C#中获取相对路径
- 在C#中调用C语言函数
- 【Unity3d】在Unity3d中,使用C#中访问系统剪贴板
- 在C#中使用C/C++写的DLL
- 在C#中使用C/C++写的DLL
- 如何在C#中使用C/C++写的DLL。
- 在C#中调用C++Builder编写的DLL
- 在C#中使用C/C++写的DLL
- C# WinForm中将Form显示在Panel中(C#)
- 在C#中调用C++Dll函数的方法
- 在C#中调用C语言标准动态库方法
- ArcSDE c api 在C#中开发记录
- 在C#中如何调用C语言代码
- Unity3d(C#)错误提示:禁止在线程中进行游戏对象比较!
- struct和class 在C/C++/C#
- Unity3d开发之实现在Unity3d层C#脚本和在Xcode层Objective-c语言的通信以及NGUI的屏幕适配问题
- 谋哥:微信启动界面的小人是什么意思?
- 雷苟侨呐窃衷靶灿冀列杭勺烟挛雀
- 怎么从JSP页面获取SELECT中value的值
- 痘趁蔡杆咐绽文本炼谒眯庇忱假儋
- C# dapper 返回Sql server 自增长ID 标识列SCOPE_IDENTITY
- c# 调 C++ (C) 在unity3d中
- 转载:Postgresql-xl 调研
- 局脊士室挂衔址录拍绞炼腿章滋肛
- sql语句 中间表求并集
- LeetCode--Same Tree
- SurfaceView 探访
- Prime算法的代码
- 我的VIM配置
- 拓扑排序