社区
C#
帖子详情
C#程序调用c++的dll,怎样把dll中函数返回的数组赋值给c#程序中的数组
shanshui0121
2012-09-21 07:26:28
dll的函数是
char *A(char buf[])
{
char buffer[50]={};
return buffer;
}
C#中调用
char [] b =new char[50]{};
[DllImport("dll.dll")]
public static extern char A(char buf);
A(b);
怎么把buffer[50]中的数据在C#中读出来
...全文
262
8
打赏
收藏
C#程序调用c++的dll,怎样把dll中函数返回的数组赋值给c#程序中的数组
dll的函数是 char *A(char buf[]) { char buffer[50]={}; return buffer; } C#中调用 char [] b =new char[50]{}; [DllImport("dll.dll")] public static extern char A(char buf); A(b); 怎么把buffer[50]中的数据在C#中读出来
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shanshui0121
2012-09-24
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
首先你的C代码就有问题,buffer是一个数组,而数组是保存在栈中的,你函数一返回就平栈了,那么buffer中的值很可能就已经变了。
第二,C#的函数声明应该是
[DllImport("dll.dll",CharSet=CharSet.Ansi,CallingConvention=CallingConvention.Cdecl)]
public static extern I……
[/Quote]
我的题目没写清楚
c++编写的dll中的函数:
static char buffer[50];
char *A(unsigned char buf[])
{
for(int i=0;i<50;i++)
{
buffer[i]=buf[50];
}
return buffer;
}
C#中调用:
byte [] b =new byte[50]{1,1,1,1,1,1,1,1,1};
[DllImport("dll.dll")]
public static extern char A(char buf);
char [50]a;
a=A(b);//有问题????
怎么把buffer[50]中的数据,赋值给C#中的a数组
qldsrx
2012-09-23
打赏
举报
回复
[DllImport("<Unknown>", EntryPoint="A")]
public static extern System.IntPtr A(byte[] buf) ;
bigbaldy
2012-09-23
打赏
举报
回复
首先你的C代码就有问题,buffer是一个数组,而数组是保存在栈中的,你函数一返回就平栈了,那么buffer中的值很可能就已经变了。
第二,C#的函数声明应该是
[DllImport("dll.dll",CharSet=CharSet.Ansi,CallingConvention=CallingConvention.Cdecl)]
public static extern IntPtr A(string buf);
取值用Marshal.PtrToStringAnsi(A(b));
shanshui0121
2012-09-23
打赏
举报
回复
c++编写的dll中的函数:
static char buffer[50];
char *A(unsigned char buf[])
{
for(int i=0;i<50;i++)
{
buffer[i]=buf[50];
}
return buffer;
}
C#中调用:
byte [] b =new byte[50]{1,1,1,1,1,1,1,1,1};
[DllImport("dll.dll")]
public static extern char A(char buf);
char [50]a;
a=A(b);//有问题????
怎么把buffer[50]中的数据,赋值给C#中的a数组
Pigeon汪
2012-09-23
打赏
举报
回复
可以用回调函数
mywayss
2012-09-22
打赏
举报
回复
怎么用啊
shanshui0121
2012-09-22
打赏
举报
回复
怎么用啊
null
2012-09-22
打赏
举报
回复
野指针
C#
委托与
C++
回调
函数
处理
在
C#
中
,你需要定义一个对应的委托类型,并使用`
Dll
Import`属性导入
C++
的
DLL
函数
。例如: ```csharp [UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate void MyCppCallback(int result); ...
易语言源码向
DLL
传递
数组
参数的实现方法.7z
5. **
调用
DLL
函数
**:在声明了
DLL
函数
后,就可以在
程序
中
调用
它。将内存地址(通过“取内存指针”命令获得)作为参数传递给
DLL
函数
,而不是直接传递易语言的
数组
对象。 6. **释放内存**:
函数
调用
完成后,别忘了...
微信小
程序
系统教程
C#
版[3/3阶段]_微信小
程序
电商系统
微信小
程序
系统教程[初级阶段],微信小
程序
0基础学起,讲解微信小
程序
开发的基础知识。 微信小
程序
系统教程共有“微信小
程序
系统教程[初级阶段]”、“微信小
程序
系统教程[
中
级阶段]——核心技术”、“微信小
程序
...
CSharp如何
调用
dll
中
带指针参数.docx
在
C#
中
调用
C++
编写的
DLL
,特别是涉及到指针参数时,需要使用.NET Framework的`
Dll
Import`特性来导入外部
函数
。本文将详细介绍如何在
C#
中
处理各种类型的指针参数,包括基本类型、
数组
、结构体以及嵌套结构体指针。 1...
C#
与
C++
opencv3 Mat图像之间传递.pdf
在
C#
部分,使用了`
Dll
Import`特性导入了
C++
编译生成的动态链接库(
DLL
),定义了与
C++
中
相同的`GetMat`
函数
,以接收
C++
返回
的图像数据。在`Form1`的构造
函数
中
,
调用
了这个
函数
,并将
返回
的图像数据转换为`Image`...
C#
110,825
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章