c++-C#调用C++动态库参数转换

问题描述

C#调用C++动态库参数转换

用C#调用C++封装好dll,这个动态库的方法如下:long GetImageData( LPCTSTR i_strImageID, long i_nPhysicalX, float i_fMag,
long *o_nPhysicalWidth, long *o_nPhysicalHeight, void *i_pBuffer, long *io_nBufferSize) ,请问对应的C#方法参数如何写?

解决方案

 int GetImageData( StringBuileder i_strImageID, int i_nPhysicalX, float i_fMag,
ref int o_nPhysicalWidth, ref int o_nPhysicalHeight, intptr i_pBuffer, ref int io_nBufferSize)

解决方案二:

非常感谢,但测试了一下,报以下错误:Additional information: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏

解决方案三:

你可以参考这样写:
C++
extern "C"__declspec(dllexport)
void GetImageData(char*strImageID,int i_nPhysicalX, float i_fMag, int o_nPhysicalWidth,
int o_nPhysicalHeight, ushort* i_pBuffer, int* io_nBufferSize)

c#
[DllImport("xxxxx.dll",EntryPoint="GetImageData")]
public static unsafe extern void GetImageData(char*strImageID,int i_nPhysicalX, float i_fMag, int o_nPhysicalWidth,
int o_nPhysicalHeight, ushort* i_pBuffer, int* io_nBufferSize)

c#中
string strImageID_ptr="A0001"
char*strImageID = (char*)Marshal.StringToCoTaskMemAnsi(strImageID_ptr)
ushort[,] i_pBuffer_t=new double[10,10]
ushort* i_pBuffer =&i_pBuffer_t[0,0]

时间: 2024-08-03 08:58:51

c++-C#调用C++动态库参数转换的相关文章

<急>关于jni调用第三方动态库不成功

问题描述 <急>关于jni调用第三方动态库不成功 我在自己的方法中调用第三方动态库的方法可是要么就报该方法没有定义要么就出现如下错误求解答在线等..!!!

请问web开发中,js调用DLL动态库,同一台pc机调用了不同的动态库,有的动态库调不到,怎么办?

问题描述 请问web开发中,js调用DLL动态库,同一台pc机调用了不同的动态库,有的动态库调不到,怎么办? 两个动态库,一个医保刷卡的,一个刷POS的,单独使用POS机,能正常使用,但是如果之前使用过医保刷卡机,就不能进入POS的动态库了,感觉像是冲突了一样,哪个大神能帮忙解决一下. 解决方案 两个动态库,一个医保刷卡的,一个刷POS的,单独使用POS机,能正常使用,但是如果之前使用过医保刷卡机,就不能进入POS的动态库了,感觉像是冲突了一样,哪个大神能帮忙解决一下.

dll动态库-python 调用DLL 动态库之后 怎么释放

问题描述 python 调用DLL 动态库之后 怎么释放 各位大神,请问python 利用 ctypes调用DLL之后怎么释放啊 解决方案 不需要释放,CDLL析构中会自动释放

android-[NDK]关于NDK调用第三方动态库的问题

问题描述 [NDK]关于NDK调用第三方动态库的问题 假设现在有个动态库libOther.so,我调用了它里面的函数写了动态库libMy.so(以上都是x86下g++直接编译链接的) 现在我有一个android应用打算用libMy.so里的函数,最终封装成NDK下的动态库main.so, 请问在NDK下应该如何build? 本人NDK小白,能否详细说下: 1.两个(Other 和 My)动态库放哪? 2.两个动态库对应的头文件放哪? 3.mk文件应该如何修改? 4.JNI实现的main.cpp应

c++-C#调用C++动态库DLL中的函数

问题描述 C#调用C++动态库DLL中的函数 C#调用C++动态库DLL中的函数,此函数参数中有bool(小写)类型的参数.c#该如何进行转换 解决方案 C#调用C++动态库dllC#调用C++动态库(dll)C#动态调用C++编写的DLL函数 解决方案二: bool类型的true 或false一般对应1和0.有的语言没有bool类型的.传递参数时可用整型替代. 解决方案三: public static extern int RD_CloseCom(bool IsOpen); 解决方案四: 在C

c#-窗体程序调用别人动态库成功,控制台应用程序不成功

问题描述 窗体程序调用别人动态库成功,控制台应用程序不成功 C#调用别人的动态库,用窗体程序调用成功 用控制台应用程序调用不成功 解决方案 1.在解决方案中添加引用:右键鼠标-->添加引用-->浏览-->选择dll放置路径后点击"确定". 2.在应用文件头处使用using ×××: 3.控制台下面在main中调用. 第一次回答问题,不知道对你有木有帮助

c#调用c++动态库 char* []类型

问题描述 DWORD__stdcallDBPCreate(char*sips[],char*susers[],char*spasss[],WORDwport[],intnsize);c#调用c++动态库,这个函数怎么导入 解决方案 解决方案二:[DllImport]staticexternintDBPCreate(byte[][]sips,byte[][]susers,byte[][]spasss,ushort[]wport,intnsize);解决方案三:char*可以用StringBuild

问一个c#中调用C++动态库的问题

问题描述 有一个动态库test.dll是用c++写好的,其中实现了对函数methodA的重载,比如methodA(inta)和methodA(stringa).用dumpbin-exportstest.dll可以看到类似?methodA@@YAHHD@Z?methodA@@YAHHH@Z的东东.现在我在c#中用DllImport来实现对test.dll中methodA(inta)的调用,我的EntryPoint该如何赋值呢? 解决方案 解决方案二:没人回答么:(

急求解答!C#调用C++动态库的结构体参数及返回问题 50分

问题描述 最近研究读取一卡通卡号的问题,对方给了动态库DLL及函数帮助文档,计划用C#实现对cpp动态库的调用,由于cpp方面知识实在薄弱,在碰到了结构体传参的时候,一直无法正常进行.Cpp的函数说明:IntLKE_ICCR_HID_ExchangeAPDU(G_APDU_COMM*ApduComm,G_APDU_RESP*ApduResp) 参数定义:ApduComm:APDU数据包APDU应答包返回值:0:成功<0:错误ApduComm结构体-cpptypedefstruct{unsigne