在C#工程中调用C++的DLL
来源:百度文库 编辑:神马文学网 时间:2024/04/27 17:37:23
在C#工程中调用C++的DLL
2010年8月17日 admin跳到评论—–最近因为自己在实验室用到这方面的知识,所以把学习到的一些知识记录在此。如果有什么问题,欢迎一起讨论。
原来的工程是用C++语言编写的。如果需要在C#工程中调用c++完成的功能模块,一个简单的做法就是将原有C++模块封装为动态链接库(DLL), 而在c#中直接导入已有的DLL 接口。具体的做法如下:
(1) 将原来C++模块封装为DLL
a. 创建和使用动态链接库
(2) 在C#工程中声明导入的DLL中函数接口
一个简单的实例如下:
假设已有C++ 函数
public static extern int tutorial (int* z, int* x, int * y ); // C++函数声明
为了在C# 中调用tutorial函数,需要在相应的CS文件中导入相关的函数声明:
using System.Runtime.InteropServices; [DllImport("Demo.dll", //动态链接库的名称EntryPoint = "tutorial", //函数入口点,即函数名CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] //使用的字符集和其他public static extern int tutorial (ref int z, ref int x, ref int y ); // 函数原型声明需要注意的问题:
(1) DLL应放在C#工程可以搜索到的路径下,即 a. 与C#工程可执行文件放在同一个目录下(path中设定了当前路径) b. 系统 path已列举的目录下. c. 工程引用的目录下。
(2) 如果DLL中引用了其他的库,而这些库并不是在任何一台机器上都找得到的情况下,C#在调用DLL 函数时会出现找不到当前DLL的错误,此时可能是因为当前DLL所依赖的库函没有找到。此时,可以用 Dependency Walker 查看DLL库依赖情况,发现真正问题所在。当你发现你的代码在某些机器上可以正常运行,但是移植到其他机器上出现问题的时候,你需要留意这点:)
在C#工程中调用C++的DLL - Learning - 新言云语
在C#工程中调用C++的DLL
关于在C#中调用C DLL 时的参数传递
在 C# 中通过 P/Invoke 调用Win32 DLL
在 C# 中通过 P/Invoke 调用Win32 DLL
[C#/C ]C#调用非托管DLL的APIs - .NET人字拖 - 博客园
C#调用C++编写的COM DLL
如何在Java中调用dll
C#调用DLL的方法 - 51CTO.COM
C#中调用Windows API的要点
在c#中使用vc++编写的封装在Dll中的类
在VB应用程序中调用VC环境下开发的DLL
如何在C#中加载自己编写的动态链接库(DLL) - liweihua200204的专栏
如何在C#中加载自己编写的动态链接库(DLL)
如何在C#中加载自己编写的动态链接库(DLL)
C#程序调用非托管C++ DLL文件的方法 - Chase的技术博客 - 博客园
C语言调用Dll动态链接库
在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
小玩混合编程--用C 调用c#写的webservice
从C#程序中调用非受管DLLs
如何写 C dll 和调用它们从 Visual Basic
基于C语言Dll调用的pythonqq的一个应用拜年消息群发器的开发 - 开发 - 人日子...
C/C++中动态链接库的创建和调用
在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分-.NET教程,C#语言