Unity3D调用Vc和Csharp dll

1.C#封装的dll

现在vs中创建一个类,里面只要写一个简单的静态类和静态方法就可以了,如下:

namespace pnsd
{
    public static class pn
    {
        public static string getName(string name)
        {
            return name;
        }
    }
}

然后编译成dll文件,名字为pnsd.dll

2.在unity中使用自定义的C#封装的dll组件

在unity中创建一个Plugins文件夹,所有的外部引用的dll组件必须要放在这个文件下,才能被using

在C#脚本中用这个dll:

using UnityEngine;
using System.Collections;
using pnsd;//不是dll文件的名字,而是namespace的名字
public class test:MonoBehaviour
{
  void Start()
   {
    string name = pn.getName("pnsd");//类名.方法名
    Debug.Log(name);//输出结果
  }
}

3. 首先用vc建立一个dll工程

4. 然后在里面建立一个testunity.h文件。内容如下

extern "C" int _declspec(dllexport)testunity(); // 定义道出接口

保存,ok,在建立一个testunity.cpp,代码如下:

#include "testunity.h"
int testunity()
{
   return 0;//这是函数,里面可以写你想要实现的任何功能
}

然后编译、组建。就生成了testunity.dll文件。

然后再把这个文件放在你的unity工程的assert的Plugins(如果没有这个文件,那你就要新建了)

然后在unity里面新建C#脚本文件dlltest。代码如下

using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
public class dlltest : MonoBehaviour {
    [DllImport ("testunity")]
    private static extern int testunity();
    // Use this for initialization
    int i=testunity();
    void Start () {
       print(i);
    }
    // Update is called once per frame
    void Update () {
    }
}

然后再把这个文件在unity里面拖到camera里面就ok了。

然后运行,就可以实现效果了哈。

《如果是C#封装的dll,就用 using的方式引用,如果是C++的dll,就DllImport[".dll"]的方式来添加对dll的引用》

时间: 2024-10-12 15:08:07

Unity3D调用Vc和Csharp dll的相关文章

Java采用JNI调用VC++生成的dll(Java与C++交互)

应项目需求,需要android调用java,java再调用C++实现android一个图片匹配的功能,我们作为java组需要和C++和Android进行交互.下面是java和C++采用JNI的方式进行接口传参交互,我做的一个demo并运行成功. 什么是JNI? JNI全拼是Java Native Interface,中文意思为Java本地调用.JNI标准是Java平台的一部分,它允许java和其他语言的代码进行交互.JNI开始是为了本地已经编译好的语言,尤其是C和C++而设计的,我们也可以使用J

发现个delphi调用vc写的Dll中包含pchar参数报错奇怪现象

发现个delphi调用vc写的Dll中包含pchar参数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会运行错,在之前任意加上条语句就不报错了奇怪! vc的DLL源码地址 http://blog.csdn.net/lqena/article/details/46357165 Delphi源码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Co

Java採用JNI调用VC++生成的dll(Java与C++交互)

应项目需求,须要android调用java,java再调用C++实现android一个图片匹配的功能,我们作为java组须要和C++和Android进行交互.以下是java和C++採用JNI的方式进行接口传參交互,我做的一个demo并执行成功. 什么是JNI? JNI全拼是Java Native Interface,中文意思为Java本地调用.JNI标准是Java平台的一部分.它同意java和其它语言的代码进行交互.JNI開始是为了本地已经编译好的语言,尤其是C和C++而设计的.我们也能够使用J

Unity3d 调用C++的DLL

原地址:http://www.cnblogs.com/alongu3d/archive/2013/04/20/3031904.html Unity 3D 调用DLL的方法 本文转载:渡蓝的博客园 http://www.cnblogs.com/oldman/articles/2501486.html 如果涉及到版权问题,则请留言,我会尽快删除! 接触Unity 3D 时间不长,看到网上有人问怎么通过Unity来调用Dll,而且发现这个问题似乎是用unity的朋友并不熟悉DLL的使用造成的,正好我使

Unity3d 调用 C++ DLL之 DLL回调Unity3d (C++ DLL回调 C#函数)

上篇   Unity3d 调用C++ DLL (Win平台)  介绍了简单的 Unity3d 调用 C++ DLL的方法,但是这样是不够的,这里再讲下通过函数指针让 C++ DLL中回调 Unity3d 的方式. 转自http://blog.csdn.net/huutu 星环游戏 http://www.thisisgame.com.cn 创建DLL 以及在 Unity3d 中调用 DLL 中函数在上篇中介绍了. 首先,在C#中是没有函数指针的,我们使用 Delegate . 转自http://b

VB调用VC dll的返回方式

第一种类型:数值传递 注意:在VB中,默认变量传递方式为ByRef为地址,而传递值就是用ByVal,还要注意在C++中,int类型的变量是32位的,在VB中要用long型变量来配合.VC++部分: [cpp] view plaincopy extern "C" _declspec(dllexport) int __stdcall TestCalc(int source) { //AFX_MANAGE_STATE(AfxGetStaticModuleState()); return(++

Unity3d 调用 Luajit C++ DLL 实现调用 Lua脚本

前面介绍了在 Unity3d 中通过 Plugin 功能来调用 C++ DLL 中的函数 以及回调的使用方法,但最终目的还是让 Unity3d 中可以调用 Lua 脚本中的函数,现在来实现. 首先关注前面两篇文章: 1.Unity3d 调用C++ DLL (Win平台) 2.Unity3d 调用 C++ DLL之 DLL回调Unity3d (C++ DLL回调 C#函数) 文章转自http://blog.csdn.net/huutu 星环游戏 http://www.thisisgame.com.

vc 制作图片资源dll

方法一: 使用纯WIN32 DLL方法封装纯资源第一步,通过VS2005建立WIN32 DLL 空工程第二步,设置配置属性->链接器->高级->无入口点(是/NOENTRY)设置配置属性->C/C++->代码生成->运行时库(多线程/MT)第三步,加入图片资源并定义资源名称第四步,生成DLL,如Skin.DLL第五步,调用方法例子HINSTANCE hLibrary; if ((hLibrary = LoadLibrary (TEXT ("skin.DLL&q

Delphi 调用C/C++的Dll(stdcall关键字, 会导致函数名分裂. 此时函数名变成[email protected])

delphi调用C++写的Dll, 当然这个Dll要求是非MFC的Dll, 这样子才能被delphi调用. 根据C++定义函数的情况, Delphi有不同的相对应的处理方法.1. 声明中不加__stdcall,采用VC默认格式__cdecl,但在Delphi中要注明调用格式为cdecl.C++中例子: [cpp] view plain copy print? extern "C" int __declspec(dllexport) add(int x, int y); Delphi中例