社区
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#中读出来
...全文
272
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
作业
写回复
配置赞助广告
用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#
通过
dll
读取opencv里的mat图片
3.
C#
调用
DLL
,通过
Dll
Import特性导入外部
函数
。 4. 使用IntPtr和Marshal类在
C#
中
处理C风格的指针,解码图像数据。 5. 在
C#
的Windows Forms应用
中
,使用PictureBox控件显示图像。 这些技术在实际项目
中
非常实用,...
MFC应用
程序
调用
控件
中
返回
值之结构体和
数组
(控件由
C++
写成
下面将详细介绍如何实现控件
返回
数组
或结构体以及应用
程序
如何
调用
这些
返回
值。 一、控件
返回
数组
1. 控件接口定义: 在控件类
中
,我们可以定义一个
函数
,例如`methoda`,用于
返回
数组
。在这个例子
中
,我们使用`...
C#
委托与
C++
回调
函数
处理
在
C#
中
,你需要定义一个对应的委托类型,并使用`
Dll
Import`属性导入
C++
的
DLL
函数
。例如: ```csharp [UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate void MyCppCallback(int result); ...
C++
封装
调用
C#
的类库
在跨语言编程
中
,有时我们需要在
C++
代码
中
调用
C#
编写的类库,以利用
C#
提供的丰富功能和库资源。本话题主要探讨如何实现
C++
与
C#
之间的互操作,特别是处理字符串类型的转换,即
C++
的`std::string`与
C#
的`System::...
易语言源码向
DLL
传递
数组
参数的实现方法.7z
5. **
调用
DLL
函数
**:在声明了
DLL
函数
后,就可以在
程序
中
调用
它。将内存地址(通过“取内存指针”命令获得)作为参数传递给
DLL
函数
,而不是直接传递易语言的
数组
对象。 6. **释放内存**:
函数
调用
完成后,别忘了...
C#
111,092
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章