2 qq 33476861 qq_33476861 于 2016.01.20 12:17 提问

关于c#使用自己的dll的问题
c#

我自己编译的a.dll中调用了其他的b.dll,
c#中使用a.dll时候需要把b.dll也import进去吗?
所有的dll都需要放进c#工程下面吗?

4个回答

caozhy
caozhy   Ds   Rxr 2016.01.20 12:19

是的,所有的dll都需要add reference。

caozhy
caozhy   Ds   Rxr 2016.01.20 12:19

默认情况下,你需要把dll添加到项目目录,不过你也可以注册到gac,那么久像.net类库那样不需要复制过来了。可以全局访问。

qq_33476861
qq_33476861 直接加一个【dllimport(“b.dll”)】吗?还是需要将a。dll中引用到的函数都列出来?
2 年多之前 回复
caozhy
caozhy 回复菜鸟1级: 只要用到了类型就必须引用
2 年多之前 回复
qq_33476861
qq_33476861 b.dll只是a.dll调用,也需要import到c#项目里面吗,c#根本没有调用b.dll的函数?
2 年多之前 回复
yx_zx
yx_zx   2016.01.20 13:01

不一定要引用,用Assembly.LoadFrom也可以,只要指定dll的路径就行了,assembly.GetExportedTypes方法可以获取程序集里面所有的类型,或用
assembly.CreateInstance创建想要的类型实例

yx_zx
yx_zx 参考一下这个http://www.cnblogs.com/dragonwlb/archive/2013/04/04/2999729.html
2 年多之前 回复
yx_zx
yx_zx 回复菜鸟1级: [DllImport("CSharpInvokeCPP.CPPDemo.dll")]     public static extern int Add(int x, int y);这像这样
2 年多之前 回复
yx_zx
yx_zx 回复菜鸟1级: C#怎么能直接引用C++的dll呢,要用DllImport
2 年多之前 回复
qq_33476861
qq_33476861 我的dll是c++写的,引用的时候就已经报错了,直接放进去也行吗?怎么做呢?
2 年多之前 回复
enpterexpress
enpterexpress   Rxr 2016.01.20 13:50

只要用到DLL文件,就该引用

qq_33476861
qq_33476861 请问怎么引用呢?是把a中使用的b中的函数挨着列下来吗?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
[Unity3d]调用自己封装的dll
之前总感觉会封装dll组件的都是大牛级别的程序员做的事情,然后供给菜鸟级别的调用。感觉为了保护自己的源码不会被他人知道,然后就封装一个dll供人家调用,那样就觉得很牛,今天我也尝试摸索了一下,感觉也就那么回事,但只是简单的测试而已,其实会写封装的,封装的好的还是很牛的,哈哈,那让我们也来假装“牛”一次吧! 首先要申明的是,unity3d支持C#语言,但只有pro版本才支持.net2.0,其他版本
2017.10.11 C#调用C++ 动态库内存溢出问题
最近在写C#调用C++ 动态库的例子,发现使用Stringbuider 时,重复使用时容易造成内存溢出的问题,网上查了之后 发现可以使用 Stringbuider .Remove(0, Stringbuider .Length)方法,但是经过测试后并没有解决问题。 后来经过仔细分析,发现使用 StringBuilder cRegResult = new StringBuilder(512);
C# 中如何编写和调用自己的DLL
一、什么是DLL 以及使用它的好处 1、DLL 即:动态链接库   DLL是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助
c#封装自己写的dll,和引用自己的dll
1.怎么封装自己的dll; a.打开visual studio - 文件 - 新建 - 项目- 类库 - 名称MyTestDll; b.右键Class1.cs - 修改为 TestDll.cs; c.在里面写一个自己想操作的函数,如:  public int fnAdd(int iAdd1, int iAdd2)       {             return (iAdd1 +
C#如何引用定义好的dll文件
1 添加引用,找到dll文件  2 引用类的名称空间,生成类的实例,调用类的方法,测试OK。
c# 操作 execl的dll文件
里面有个文本文件介绍怎么操作 导入dll文件,具体工具箱中 选择项 添加<br> ExcelFile excelFile = new ExcelFile();<br> ExcelWorksheet sheet = excelFile.Worksheets.Add("WolfSpider");<br><br> int columns = dataGridView1.Columns.Count;<br> int rows = dataGridView1.Rows.Count;<br><br> for (int j = 0; j < columns;j++ )<br> {<br> sheet.Cells[0, j].Value = dataGridView1.Columns[j].HeaderText;<br> }<br> <br> for (int i = 1; i <= rows; i++)<br> {<br> for (int j = 0; j < columns; j++)<br> {<br> sheet.Cells[i, j].Value = dataGridView1[j, i-1].Value;<br> }<br> }<br><br> excelFile.SaveXls("./WolfSpider.xls");//保存位置
<U3D>Unity3D项目程序加密1——在Unity3D里使用自己的dll和生成dll
如果稍微关注过这方面知识的朋友,应该知道Unity3D做出来的项目是非常容易被反编译的,被反编译后你的所有资源和代码都将会毫无遮掩的呈现出来。由于.net本身没什么加密的措施,所以我们一般都是使用混淆代码的方式来对程序进行一定的加密。 接下来2篇博客,阿赵将会简单的讲一下我自己在Unity3D的程序加密做法。首先第一篇,我会简单的说明一下怎样在Unity3D里面使用dll动态链接库,然后第二
C#直接调用DLL导出函数
示例 1 本示例显示如何使用 DllImport 属性通过调用 msvcrt.dll 中的 puts 输出消息。 // PInvokeTest.cs using System; using System.Runtime.InteropServices; class PlatformInvokeTest { [DllImport("msvcrt.dll")] public
C#引入Redis时所需四个DLL
C#中引入Redis时需要引用四个DLL ServiceStack.Common.dll ServiceStack.Interfaces.dll ServiceStack.Redis.dll ServiceStack.Text.dll
如何通过C#调用OpenCV函数(自制OpenCV的c++ dll文件)
写在前面:学习CUDA过程中看到了可以用OpenCV写一个类,然后直接调用的方法,感觉很有意思(基础太差,可能这是个很基础的问题)。于是就想在 C# 中调用OpenCV的方法,发现有点麻烦,需要生成 .dll(动态链接库)文件,生成过程中出了些小问题,所以把这个过程记录下来,以备以后查看。 首先,你的电脑上需要安装OpenCV,具体安装过程百度即可,并不难(具体可以参见我转载的另一篇OpenCV