C#中使用DLL相关问题
C#中使用DLL相关问题
一,C#调用 C/C++ 库函数
1,UNITY的C# VS工程常常打不开 属性页,右键工程无 【添加引用】项。原因是VS的自带工具【适用于UNITY的工具】导致的。
解决办法:VS-【工具】-【选项】-【适用于UNITY的工具】-【杂项】-【访问项目属性】改为true,然后重启VS, 就可以打开项目属性了
2,C#工程的属性页与C++相差很大,它没有文件目录的设置项,没有LIB文件的添加和目录项,因此,C#工程使用库文件只有一种方式:添加引用,
且C#只能引用DLL,不能引用LIB
3,添加引用时,C#工程一定要添加引用才能使用DLL,就算你的DLL在工程中任何位置不添加引用也不能用,这很明显,就像C++工程中不添加LIB及其目录则不能用一样
添加引用只是告诉IDE该到哪里去取这个DLL,
4,在代码中声明导出函数【注意导出函数必须是 static extern的】
[System.Runtime.InteropServices.DllImport("KERNEL32.DLL", EntryPoint="RtlZeroMemory")]public unsafe static extern bool ZeroMemory(byte* destination, int length);
关于静态链接库和动态链接库:
静态链接库只有一个.LIB文件,使用时 : 工程中添加.lib并指定lib目录,代码中包含.h或只接声明lib中的函数名然后使用
动态链接库可以只生成一个dll而不生成lib,这样使用时只能使用 系统函数loadlibary()来加载这个dll,并从中导出想要使用的函数。
动态链接库常用的使用方式是生成一个lib和一个dll,使用时 : 工程中添加.lib并指定lib目录,代码中包含.h或只接声明lib中的函数名然后使用
二,C#调用 C# 库
C#的库只有动态链接库DLL,且调用极为简单,只需要添加引用,然后在程序中像使用一个源码类那样使用它,不需要 DllImport标签来导入函数,示例如下:
//DLL,创建一个库工程,添加如下代码,编译生成了ClassLibaray1.DLLnamespace ClassLibrary1 {public class Class1{public void Print(string s){Console.WriteLine(">> {0}", s);}} }
//工程中添加引用,将ClassLibaray1.dll添加到工程中//使用ClassLibaray1.DLL
using ClassLibrary1;namespace uselib {public class myclass{static void Main(){var osp = new sp1class();osp.Print("10");Class1 oc1 = new Class1();oc1.Print("ddd");}} }
另外参考:
1,将CS脚本打成DLL并在UNITY中使用
https://blog.csdn.net/qq_25210959/article/details/53285403
2,将UNITY 的DLL打进自己的DLL中?
https://blog.csdn.net/suifcd/article/details/48248015
posted on 2018-07-27 19:16 时空观察者9号 阅读(...) 评论(...) 编辑 收藏
C#中使用DLL相关问题相关推荐
- 直接载入内存中的DLL
http://www.cppblog.com/mybios/archive/2006/11/21/15483.html 作者:任明汉下载源代码前言你可能不希望在发布程序时附带上一个外部的 DLL,因为 ...
- 学习笔记之卸载远程目标进程中的DLL模块(转)
学习笔记之卸载远程目标进程中的DLL模块 (2007-07-23 23:51:02) 转载▼ 学习笔记之卸载远程目标进程中的DLL模块2007/7/23 1.首先得把DLL模块中的线程结束 使用Cre ...
- 计算机中丢失cg,【计算机中丢失dll文件】计算机丢失dll文件_计算机中丢失cg dll-win7之家...
2017-05-16 00:00:00 浏览量:489 wpcap.dll是一个高层的强大捕获程序库,与Unix下的libpcap兼容.它独立于下层的网络硬件和操作系统文件下载,解决找不到wpcap. ...
- 多种方法解决计算机程序中出现.DLL文件丢失的问题
title: DLL-lose date: 2019-11-21 15:55:47 description: 解决计算机程序中出现.DLL文件丢失的问题 在安装某些软件,我们正准备开开心心地打开, ...
- dll放在unity哪个文件夹下_Unity中调用DLL库
DLL -- Dynamic Link Library(动态链接库文件),这里以Window平台为例. Unity支持的两种语言生成的DLL库(C++.C#),这里以C#为例,C++网上可以搜索很详细 ...
- dll找不到dll electron_如何在Electron中调用Dll
如何在Electron中调用Dll 客户端有些硬件的接口需要调试,是在电脑上连了一些硬件的设备,比如打印机.扫描仪或者进行串口通信等等.单靠JS是完成不了了,我们决定通过把C++或者C#把这些功能打包 ...
- C++中模块(Dll)对外暴露接口的方式
总结下C++中模块(Dll)对外暴露接口的方式: (1)导出API函数的方式 这种方式是Windows中调用DLL接口的最基本方式,GDI32.dll, User32.dll都是用这种方式对外暴露系统 ...
- 如何在全局程序集缓存 (GAC) 中安装 DLL 文件
要使用 Visual Studio .NET 创建小型类库项目.生成强名称,以及在 GAC 中安装项目的 .dll 文件,请执行下列步骤: 在 Visual Studio .NET 中,创建一个新 V ...
- 计算机中丢失UID.MR.DLL,计算机中丢失.dll如何解决 大师来详解
如果计算机中缺少dll文件,我们打开软件或者是游戏的时候就会弹出缺少dll文件,这个时候怎么办呢.下面看看如何解决计算机缺少dll文件的问题, 工具/材料 DirectX Repair 操作方法 01 ...
最新文章
- Ubuntu 安装 Docker 容器
- 【JFreeChart】JFreeChart—输出柱形图
- 【37.68%】【hdu 5918】Sequence I
- LwIP之动态内存池
- Ubuntu安装JDK,搭建java环境
- spark的UI界面解析
- 全网首发:JDK绘制文字:一、绘制流程
- 舒尔特表-最终版 js
- 我(和谐)草(和谐)尼(和谐)玛
- JRebel过期激活
- 基于web的实验室设备管理系统
- 数字转成人民币汉字大写(李刚著《疯狂Python讲义》P87,解决小数部分及多个零的问题。学习笔记)
- linux脚本解密,shell脚本加密与解密
- python中奖号_python制作一个简单的中奖系统
- krpano 小行星开场和自动旋转
- 护士资格证考试机考可以用计算机吗,护士资格人机对话考试怎么考?
- 自定义类型:结构体2.0(初阶+进阶)+位段+枚举+联合
- 【大数据处理技术】实验10
- 什么是DHT网络(DHT network)
- mysql的安装步骤
热门文章
- 笔记-高项案例题-2019年下-计算题
- 笔记-项目立项管理-项目论证的程序
- 若依微服务版前端怎样在接口返回500时去掉一直弹窗提示服务未找到
- Python中使用高德API实现经纬度转地名
- C# Winform程序中DataGridView中使用ContextMenuStrip实现右键菜单
- 关于mysql使用!=或者<>会导致索引失效问题的验证
- 操作系统Linux环境下动态分区存储管理的内存分别配回收
- python文本分类_教你用python做文本分类
- ansys参数化编程与命令手册_查看Bash手册--man命令
- 4 个关键步骤打造用户满意的产品体验