c# 调用 c++ 的dll,参数转化问题

问题描述

大家好,c++写的DLL中有个方法参数是struct,如下:typedefstructeventData{unsignedlongrefId;unsignedlongoldRefId;unsignedlongsecOldRefId;ctcGlobalRefIdglobalRefId;unsignedlongnetCallId;unsignedlongoldNetCallId;unsignedlongstate;unsignedlongevent;unsignedlongeventQualifier;unsignedlongassociatedEvent;unsignedlongtype;unsignedlongcallsQueued;}eventData我在C#中对应去写了个struct,但是遇到问题的是,上图红色部分的event这个在C#中是个关键字,直接会报错并且C++的DLL我无法更改,请问这问题有解么?

解决方案

解决方案二:
这个变量名随便写没关系,不影响调用
解决方案三:
换个名,与名字无关
解决方案四:
随便写个名字就好,系统匹配的是这个结构体的内存分布。入库地址+偏移量+位数来查找参数,而非使用名字来查找参数(名字实际是给人看滴,机器本身不看他)

时间: 2024-12-08 08:31:25

c# 调用 c++ 的dll,参数转化问题的相关文章

关于C#调用C++的dll的转化问题

问题描述 小弟最近在做一个项目需要调用C++的库再部分代码的转换上遇到点问题,哪位大神解决下C++代码如下:第一段FILE*file=fopen("./PlayBack.dav","wb");CLIENT(DataCallBackFunc,(DWORD)file);第二段int__stdcallDataCallBackFunc(DWORDdwUser){FILE*file=(FILE*)dwUser;if(file){fwrite(pBuffer,1,dwBufSi

.net-C#调用c++的dll执行带字符串参数的函数时遇到的问题

问题描述 C#调用c++的dll执行带字符串参数的函数时遇到的问题 我在c++项目中实现函数: extern "C" __declspec(dllexport) int FUNC1(const char* xmlSta, char* fileOut) { return 0; } 然后编译成动态库a.dll,并在C#项目中引用, 用静态加载的方式,是可以运行的,代码如下(只写调用的部分): [DllImport("a.dll", EntryPoint = "

请教:关于从C#调用外部C++ DLL出错,二维指针参数不匹配

问题描述 请教:关于从C#调用外部C++ DLL出错,二维指针参数不匹配 我是新人,头一次发帖,如果这个问题太低级还请各位大神原谅! 我在写一段C#代码调用外部一个C++DLL,该DLL数据初始化部分接口是这样的: public unsafe void SetImage(ushort** slices, int xSize, int ySize, int zSize) 其中第2-4个参数分别是一个3维图像数据的长宽高,我们假定图像是512×512×400:而这个二维指针参数slices则是指向指

delphi调用c++ dll参数char* 的问题

问题描述 delphi调用c++ dll参数char* 的问题 我有一个c作的dll 具体说明如下 1.文件解密接口函数及参数说明: int stdcall DecodeFile(char* InFile, //要解密的文件 char* Key, //解密的密钥 char* OutFile, //解密后的文件,在解密路径下的同名XML文件 char* Info); //提示信息函数返回 0 成功,非0失败. 2.动态调用实例: String jmfile = 要解密的文件路径; String k

c++-【下跪】PB调用C的DLL报错

问题描述 [下跪]PB调用C的DLL报错 一下是文档中的结构体: typedef struct{byte Track2[37]; /*二磁道信息 ,asc格式 最长37个字节 */byte Track3[104]; /*三磁道信息 asc 格式 最长 104个字节*/byte Pwd[8]; /*加密后的密码 8个字节 */byte Amount[12]; /* 金额, 分为单位000000000001 代表1分不允许0金额积分兑奖时为积分*/byte Trace[6]; /* 终端流水,不是动

dll c#-c#调用c++的dll出现尝试读取或写入受保护的内存问题

问题描述 c#调用c++的dll出现尝试读取或写入受保护的内存问题 使用c#调用c++的一个dll.c++的接口函数为: extern "C" __declspec(dllexport)bool __stdcall CreateDetmObject(IDetManager **ppDetManager); 参数IDetManager为一个结构体: struct IDetManager { virtual void __stdcall SetListener(HWND hWnd) = 0

c# dll-c#调用C++的DLL时调用失败

问题描述 c#调用C++的DLL时调用失败 本人C#小白.老大要求用C#调用C++的DLL.C++的我写出来了,可以调用成功.#include #include void main(){ HMODULE hModule = ::LoadLibrary(_T(""C:CT_InfoTerm.dll"")); typedef LONG (WINAPI pDLLProc)(intcharintintintchar*int); pDLLProc dllfunc; int i

jna java c++ dll-最近用JNA技术,实现java调用C++的DLL,如何用java模拟c++的链表结构体。

问题描述 最近用JNA技术,实现java调用C++的DLL,如何用java模拟c++的链表结构体. C++结构体 struct CUser_DataStruct { char pKKSCoding[128]; //标签点Kks编码 DWORD time; //UTC时间 WORD millisecond; //毫秒 int nDataState; //数据状态 double dValue; //数值 CUser_DataStruct* pNext; //指向下一个数据节点的指针 }; C++的入

C#调用非托管DLL,窗口关闭后报错,求教!

问题描述 这几天在做一个医院的报销接口系统,对方提供的接口是一个DLL动态库,暂且叫做A.DLL,是delphi的.其中A.DLL中封装的各功能方法,我都能正常调用,也都执行正常,但是唯一一点不足的就是,有的时候我关闭浏览器(我们的系统是BS)的时候,就会弹出下面的那个错误提示:无效的窗口句柄.以前做此类报销接口的时候其他厂商也很多是非托管DLL,但是没有出现过此类情况.百度了很长时间,有的说资源释放问题,有的说是A.DLL自身没有做好处理,各种各样的方案吧.然后自己又写了一个CS的Demo来测

非托管dll-C#调用非托管DLL,报“其他内存已损坏”,请问怎么解决呢?

问题描述 C#调用非托管DLL,报"其他内存已损坏",请问怎么解决呢? 定义: [DllImport("BSEncrypt.dll")] public static extern bool MD5String(ref string instr, int inlen, ref string outstr, int outlen); 调用: String ls_MD5Password = new String('', 100); string as_Password =