如何修改C++动态库使得C#可以调用其函数

例如第三方提供C++API,也就是使用C++来调用最底层dll,如何在上一层封装C++动态库使得C#可以调用底层dll其函数.

2个回答

按理说,C++可以直接调用第三方的dll的。如果不可以,那就用C++写一个新的dll,自定义接口,在你写的dll中去调用第三方的dll.然后再C#中使用你写的dll.

dll导出时使用C导出方式就可以了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c#调用C动态库
C动态库里的参数为BYTE*,我应该再c#用什么数据类型进行对应,在线等
c#调用c动态库
c#调用c动态库,主要是调用读卡器的动态库
如何调用c#的动态库
各位高手过来看看,如何在mfc程序中调用c#写的动态库啊????
C#调用c动态库,Java调用c动态库
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; namespace TestDll { class Program {
java如何调用C#的动态库?
java如何调用C#的动态库?
C#如何调用VC的动态库
有一个dll别人用VC调用用的好好的 可是一到C#里用添加引用调用就报不是所支持的dll 不知道如何能够解决这个棘手的问题
mfc如何调用C#动态库
我想问各位如何可以在mfc里调用c#生成的动态库呢rn
c#如何动用c的动态库
各位大侠:rn 谁能否告诉我怎么调用,关于cmppe的例子rn让我看看rn
C语言:Linux下动态库调用主程序函数
测试发现,在动态库中调用,主程序的函数,会有如下报错: symbol lookup error: /usr/lib/***so: undefined symbol: ****** 解决方法: 编译时,加上参数: -Wl,-E 博客园上的一遍博客写的很好,学习到很多。 http://www.cppblog.com/markqian86/archive/2017/09/27/215269.asp...
delphi 调用C语言的动态库DLL函数
一、C语言函数原型 1、接口函数定义 函数原型 void card_trans(int com,char * pUpdata,char * pDownData); 返回值为0时,交易成功,非0时为交易失败。 2、调用传入参数定义 传入首地址必须符合结构体pUpdata,传出首地址必须符合结构体pDownData. 结构体pUpdata和pDownData的定义分别如下: typedef str...
调用C写的动态库中的函数
我要调用一动态库中的函数,声明如下rnDLLImport(bool) WriteInfo(LPCTSTR lpszPWD,PVOID pData,BYTE DataNo,BYTE &Length);rnrn在delphi中已知的四个参数类型是string,string,int,intrnrn请问如何调用,给个实列,谢谢
如何使得CListCtrl的Item可以修改?
这是一个CListCtrl,我通过rnrn m_list.InsertItem(0,temp);rn rec.GetFieldValue("user_name",un);rn m_list.SetItemText(0,1,temp);rn rec.GetFieldValue("user_password",up);rn m_list.SetItemText(0,2,temp);rn rec.GetFieldValue("user_memo",um);rn m_list.SetItemText(0,3,temp);rnrn在里面添加了一些内容rn现在我想实现这样一个效果,双击某一项,那一项就变成可以编辑的,可以进行修改。rnrn[img=http://b152.photo.store.qq.com/psb?/247960318/IipVTrjE0A65s.c*GS4dPfRBf4Q.jaYwmD3QA8199qU!/b/YYnwnVrdJwAAYlmipVqgKwAA][/img]rnrn比如说,我双击那个Angeling,然后光标就在那里面了,可以修改它的内容。rnrn至于怎么写回去,这个应该很简单了,用Get...的应该就可以,关键在于我没办法实现:双击它,它就可编辑,这一个功能……rnrn求助!
c#调用c编写的动态库,出现错误!
硬件厂商提供了类库(其中有三个文件:device.DLL,device.H,device.LIB)rn我想用用c#来调用此动态库,代码如下:rn[code=C#]namespace WindowsApplication2rnrn public partial class Form1 : Formrn rn public Form1()rn rn InitializeComponent();rn rn [DllImport("device.DLL")]rn public static extern int OpenSTFCardAuto(out IntPtr hHandle);rn private void button1_Click(object sender, EventArgs e)rn rn tryrn rn IntPtr a = new IntPtr(0);rn int x = OpenSTFCardAuto(out a);rn rn catch(Exception ex)rn rn MessageBox.Show(ex.Message);rn rn rn rn[/code]rnrn原函数如下:rnint OpenSTFCardAuto(HANELE*hHandle)rn上面的代码编译没有问题,但是运行后调试的时候,出现异常:rn试图加载格式不争取的程序。(异常来自HRESULT:0X8007000B)rnrn请问怎么解决呀?
JAVA调用C动态库
工作中遇到一个问题,需要在JAVA用调用C写的动态库。C 动态库有一个接口需要传入一个结构体参数,形如rn[code=c]strcut _para_rnrn char ar[10];rn int bv;rn int cv;rn;rn[/code]rn结构第一个成员值是一个ASCII字符串,字符串实际长度为9个字符,但是不论使用JAVA的BYTE[]、char[]还是String类型做对应,总是返回字符串数据长度不是9个字符。rn还请大侠出手相救~~~~~[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/35.gif][/img]
c调用c++的动态库
环境:centos 6.4rn编译器:gccrnrn问题:在c的文件中使用c++的动态库rnrnc++的动态库已经使用extern "C" 封装rnrn查了网上的资料尝试了以下方法:rnrn1、在c文件中使用extern #include "库的头文件"方式 rn 可惜在c文件中的extern位置报错:expected identifier or ‘(’ before ‘’ token rnrn2、尝试用g++编译现有的c工程,没能成功,出现void*无法转换到void**的错误rnrn烦请各位给点意见。谢谢
python 调用C动态库
最近打算用python仿真一下ISP pipeline的算法,但是发现python在处理大图像方面非常慢,于是想到用python调用c的函数,在c中做图像的像素级别的操作。要用调用c中函数,我们首先需要解决如何将numpy的array的buffer传入到c函数以及如何返回的问题。 下面就是一个简单的demo。python 代码: import os.path import numpy as n
C/C++动态库的调用
C++调用动态库全过程
python-调用C动态库
哥虽然作为屌丝程序员,但是也算是一个优雅的程序员,平时常用都是python、java、shell、as这些高贵无比的语言,像C、C++那样的屌丝语言,是有多远跑多远。 首先,不是C语言不好,只是指针操作,字符串操作,实在是恶心得要命,能弄懂c那一套编程方法,那绝对是屌丝中的屌丝。 哥,今天也不得不屌丝了一把,搞了一下C。 首先哥从事的的是测试工作,测试框架是python写的...
C动态库在delphi的调用
我有一動態庫12.dll,其函數說明為如下:rnrn1.HANDLE OpenCfgComm ( short nPort,char* pSetting )rn 函數說明:打開串口rn nPort:串口號,1表示COM1,2表示COM2...; rn pSetting:串口初始化值,設爲"9600,n,8,1";rn 返回:串口控制碼(長整型);rnrn2.void CloseCfgComm( HANDLE hComm )rn 函數說明:關閉串口;rn hComm: 串口控制碼;rn 返回:無;rn請求怎樣用delphi來實現,最好舉例子
c|c++ 封装 c# 调用的动态库
原理不管了,直接记录方法,要不要的会用一下,有需要再补充 1、定义接口函数方式: extern "C"  void __stdcall Function(); 2、工程中加入def文件: LIBRARY     EXPORTS Function EXPORTS ... 然后在属性页-》配置属性-》链接器中添加def文件 案例: ---autofocus.h--
delphi调用c动态库
C语言编写的动态链接库文件DDsfMac.dllrn其中有一个过程:void GenMacCEB(char* bMacKey, const char* buffers, int iBuffLen, char* Mac); rnrn要在delphi中调用这个过程。 rn在implementation上面声明如下:rnprocedure GenMacCEB(bMacKey: PChar; const buffers: PChar; iBuffLen: Integer; Mac: PChar); stdcall; external 'DDsfMac.dll';rn提示:无法定位程序输入点GenMacCEB于动态链接库DDsfMac.dll上rn请问如何解决?rnrn谢谢!
C#调用Opencv动态库
利用C#调用C++编写的Opencv程序
C#学习笔记之调用动态库
1、C#应用程序调用C#类库程序: (1)、首先,创建一个C#类库项目: (2)、然后,在项目中添加简单的测试代码,如下: (3)、然后,创建一个简单的C#应用程序,来测试调用动态库。将上面C#类库项目编译生成的TestDll.dll文件拷贝到应用程序的项目文件夹下,同时也要拷贝一份到Debug下,拷进来之后再引用该dll文件,如下: (4)、最后,编写代码调用Te
C# 调用delphi动态库
一个delphi的动态库rn里面有个函数function _FNREADCARDNO(aCOM:pchar):pchar;rnC#调用rn[DllImport("RWCard.dll", EntryPoint = "_FNREADCARDNO", ExactSpelling = false, SetLastError = true, CharSet = CharSet.Auto)]rnstatic extern string _FNREADCARDNO(string com);rn为什么出来的乱码?
c# 调用动态库报错
c#写的winform程序调用动态库后在运行一段时间后总是会报下面的错误,不知道怎么找原因啊。本人刚学C# 不是很懂啊。请教各位了!!!另外我用全局异常捕获,也捕获不到这个异常rnrnAccess violation at address 05ADCFE2 IN MODULE 'LANetSDK.dll'.Read of address 13B9C048.
c#调用C++动态库
c#调用c++动态库,资源包含C++代码及C#代码,及输出目录文件CDll.dll,CSharp.exe
C# 调用动态库的问题
如果动态库是一对话框,rnC#调用动态库时如何使得这一对话框出现在主程序的子窗口中?
C#调用C++动态库
C++动态库h文件:  /**    * @brief  打开设备。    * @par    说明:    * 建立设备的通讯并且分配相应的资源,大部分功能接口都需要在此过程后才能进行,在不需要使用设备后,必须使用 ::DCSDT_Close 去关闭设备的通讯和释放资源。    * @param[in] port 端口号。    * @n 1~64 - 表示串口模式(编号物理对应),
C# 调用Delphi动态库
[DllImport("Service.dll", EntryPoint = "checkLotStatus", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] Delphi动态库函数中的入参PAnsiChar在C#中使用String类型 Delphi动态库函数中的出参PAnsiChar在C#中使
C#调用动态库
我在C++写了个动态库,返回char*,在C#的程序中调用多次后,程序死了。如何解决这个问题,谢谢!
c# 如何封装成ocx,使得delphi可以调用
最近有个项目,我负责的是c#这块,领导要求封装成ocx,给delphi调用。之前给了tlb,delphi那人说拿不到ACitveX....我本机用delphi试过OK的。不知道什么原因。rnrn现在领导说直接封装成ocx。。。请求高手怎么封装ocx,而且deplphi可以调用呢?
在c#中如何调用c代码编写的函数
有用c编写的.h文件和.dll文件,如何在c#中调用里面的函数?
如何使用extern c,使得c++的函数,可以被c程序调用?
c++ primer 第三版 P305 有如下说明:rnrn如果我们希望C++函数能够为C 程序所用,又该怎么办呢?我们也可以使用extern "C"链接指示符来使C++函数为C 程序可用,例如rn// 函数 calc() 可以被C 程序调用rnextern "C" double calc( double dparm ) /* ... */ rnrnrn这段话我看不懂啊。。。 如何理解?
虚拟函数使得父类指针可以调用派生类的同名函数
// 虚拟函数.cpp : Defines the entry point for the console application. //函数重载是指函数名相同,在函数调用时,根据函数参数类型或个数的不同而调用正确的函数版本。 //而虚拟函数无论是函数名还是函数的返回值及函数的参数都完全相同。 //虚拟函数使得父类指针可以调用派生类的同名函数--该函数即通常所说的在子类重写父类的那个虚函数。
C# 如何修改一个动态库的名字
原来项目用到的数据库是mysql 现在依然是 只是不想给用户看到MySql.Data.dll 这个动态库rn怎么把这个动态库的名字改完项目还能用?
调用动态库中的函数,其参数为指针的问题
我在调用一个用C写的dll中的函数的时候,函数的一个参数为指针,但是PB中没有指针数据类型 也没有取址运算符,在电泳的时候提示:reference argument does not match function definition:openportrnopenport是要调用的的函数的名称,rn这个函数的参数类型不能改了,因为这个dll不是我写的,请大家支招!
如何调用外部动态库中的过程和函数?
外部动态库中有很多过程和函数,在程序中都要用到,在程序实现中如何调用,刚才见到相关的问题在论坛中出现,但我还是不太明白?这些DLL中的函数和过程在程序中应该如何声明?我把他们写成如下形式,Imp_Connect是DLL中的一个过程,结果不行,应该如何写啊,请各位大侠指教。rnrnimplementationrnrn procedure Imp_Connect(AdapAddr: Integer; CardHandle : Integer); external 'c:\winnt\system32\IMPDRVR.DLL' ;
如何调用VC++ 动态库的一个函数
有一个C++写的动态库 MYLIB.DLL,rn库中定义了一个GetData(char * reid,char * inbuf,in inlen,char *outbuf, int * outlen)的函数rn函数参数说明:rnreid: 返回码, rninbuf: 输入buf,实际是要传入一个记录结构型的地址给它,这个记录结构的每个域都是char型;rninlen: 输入buf的长度;rnoutbuf: 输出buf;rnoutlen: 输出buf的长度;rn另这个记录结构定义如下:rntypedef structrnrn char code[6]; /*代码*/rn char sdate[8]; /* 开始日期 */rn char edate[8]; /* 结束日期 */rnmmdata;rnrn下面是C++中的调用这个DLL中此函数的代码片断rnmmdata mdata;rnchar out_buf[1000];rnchar reid[4];rnint outlen=0;rnmemset((char *) &mdata,0,sizeof(mdata));rnmemcpy(mdata.code,"000024",6);rnmemcpy(mdata.sdate,"20040101",8);rnmemcpy(mdata.edate,"20040110",8);rnGetData(reid,(char *)&mdata, sizeof(mdata),out_buf,&outlen );rn//函数执行成功后,在out_buf中将填充我所需要的数据rnrn现我在DELPHI中将如何调用这个函数,主要是指如何传参数给这个函数,因为这其中还有对C++的记录结构型转CHAR 指针型的变换.希望做过这方面的指点指点,问题解决后将另加分.rnQQ:43671231 验证: DELPHI CALL C++ DLLrnrnrnrnrnrn
如何调用动态库中未export的函数?
如下是C语言的函数声明方式rnextern unsigned long WriteDog(void);rnrn现在需要在Delphi中调用该方法,但是通过动态链接和静态链接都找不到WriteDog方法,估计是没有export出来,但是在C语言里通过上述代码可以使用。rnrn请问如何在Delphi里实现?
C语言的动态库在C#中如何声明及调用
C的函数声明:rnint __declspec(dllexport) __cdecl des_encrypt(unsigned char * des_key, unsigned char * des_data, int des_len, unsigned char * des_result);rnrn用WIN8下VS2010开发WinForm程序,项目目标平台为x86,动态库声明如下:rn[DllImport("des.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]rnpublic static extern int des_encrypt(ref string des_key, ref string des_data, int des_len, ref string des_result);rnrn调用:rnstring key = "12345678";rnstring mingw = textBox1.Text;rnstring miw = "";rnint i = BankPayPublic.des_encrypt(ref key, ref mingw, mingw.Length, ref miw);rnrn前几次运行时报“System.ExecutionEngineException”的异常,调试几次后现在每次都是“vshost32-clr2.exe停止工作”,急求解决方案,多谢!rn
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview