DLL返回字符串的问题.求助啊.在C#中调用...
发布网友
发布时间:2022-05-13 10:44
我来回答
共2个回答
热心网友
时间:2023-10-08 19:31
tmpPath为什么要使用static 标记。好像记得 static char * 是只初始化一次的,比如第一次传入的length是10,那么 path 指向长度为11的一个内存空间传出函数。第二次传入一个12,但是因为static 只初始化一次,所以tmpPath指向长度为11字节的内存空间,但是memcpy复制12字节的数据过去了,所以就报内存错误了。几年没碰c的东西了,不知道记得对不对。
热心网友
时间:2023-10-08 19:31
好像不支持内存读写把 有保护
你读写的是什么的内存啊
话说之前有个修改植物大战僵尸的修改器 是c#写的
你可以参考下那个
DLL返回字符串的问题.求助啊.在C#中调用...
第二次传入一个12,但是因为static 只初始化一次,所以tmpPath指向长度为11字节的内存空间,但是memcpy复制12字节的数据过去了,所以就报内存错误了。几年没碰c的东西了,不知道记得对不对。
求助C#调用C++DLL返回string-CSDN论坛
COM中最标准的做法应该是 从C++处返回一个SAFEARRAY,元素类型是BSTR c++代码:#include #include #pragma comment(linker, "/export:GetStrArr=_GetStrArr@0")extern "C" SAFEARRAY* APIENTRY GetStrArr(){ SAFEARRAY* r; SAFEARRAYBOUND b ...
求助:C# 调用C++的dll的回调函数的结构体数组的问题,为什么只得到数组的...
关键是 lpOnRecvCardEvent 这个函数的第二个参数是个 C++ 指针。楼主在 C# 中声明这个导出函数时,使用了并不对应的 CardEvent[] C# 数组类型。正确的做法是: 在 C# 声明 lpOnRecvCardEvent 时,第二个参数应该是 IntPtr ,不是数组。由于楼主的这个 VC DLL 可能是自己写的,我没办法给出正确...
...其中一个参数为LPCTSTR类型,在C#里使用的是string,是否对?
你好,楼主对字符集的设置可能有问题,设置为CharSet = CharSet.Auto,系统可能会把字符串以unicode的编码方式传到非托管代码,而LPCTSTR本质是char类型,而非wchar。实际运行的结果可能就是,只把字符串的第一个字母传下去了,即“C"。既然字符串都是ASCII字符,建议楼主将CharSet修改为CharSet.Ansi ...
我用C++做了一个DLL,有一个std::string类型的返回值参数,请问在C#中对...
1。 在dll中定义返回string字符串的函数时,如果没有特殊处理调用该函数 在退出调用该函数的过程(函数/事件)时,会出现以下错误:Invalid Pointer Operator!2。当在单元中添加ShareMem时,在退出程序的时候会出现同样的错误 3。当在调用dll的项目文件中(不是在单元文件)添加ShareMem时,能够正常 运行...
怎样在C#中调用DLL中的函数,最好有代码和详细说明
首先,应该在C#语言源程序中声明外部方法,其基本形式是:[DLLImport(“DLL文件”)]修饰符 extern 返回变量类型 方法名称 (参数列表)其中:DLL文件:包含定义外部方法的库文件。修饰符: 访问修饰符,除了abstract以外在声明方法时可以使用的修饰符。返回变量类型:在DLL文件中你需调用方法的返回变量类型。方法名称:在DLL文件...
C#调用C++的dll库怎么传递结构体中不定长度的char数组
…调用处检查一下inkInfoBytes的长度 DLL那边有源代码的话最好对着dll调试,在函数入口点下断点,看看传递进去的东西是什么样的,这样比较容易判断故障。调试方法就是打开dll的工程,C#的exe复制到debug文件夹里,在工程设置里面调试那边把启动程序设置成C#的那个exe,然后dll代码里下断点,然后开始调试 ...
求助:C#调用c++的dll,字符串传递问题
C#的定义 public static extern IntPtr run([MarshalAs(UnmanagedType.LPArray)]byte[] uml, [MarshalAs(UnmanagedType.LPArray)]byte[] name);调用 byte[] buml = new byte[]{};byte[] bname = new byte[]{};string a="bcde";string b="fghijk";buml = System.Text.Encoding.ASCII...
C#调用labview封装的DLL,为什么字符串出参返回一直是空?
字符串是不能转出值的.必须使用System.Text.StringBuilder类.或者使用已实例化的char[]数组.
c#调用c++写的dll 时,c++中有一函数返回值为char*。在c#中相应的数据...
用string。 char*表示返回一个字符类型的内存地址。此字符串在函数中应该不会有任何改变 stringbudiler是变动字符串常用的。