社区
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#中读出来
...全文
247
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#
初级入门精讲(3)
C#
编程基础
面向对象
C#
初级入门精讲视频教程,该课程内容涵盖1、方法的定义、重载与运用;2、方法
中
高级参数(params、ref、out)的使用;3、
数组
的定义与使用、
数组
的常见操作(遍历、最值、倒置、排序);4、掌握
程序
的调试技术
C#
调用
C++
dll
返回
数组
C#
调用
C++
dll
返回
数组
的一种情况;
c#
程序
调用
c++
编写
dll
需要注意问题
c#
dll
c++
winapistruct数据结构 现在在写
c#
调用
c++
dll
的例子,
dll
中
某一个
函数
需要一个结构体地址作为参数传递。 但是在传递结构体的时候,
程序
一直
返回
错误,估计原因在
c#
写的结构体和
c++
中
的结构体之间有些不一致。 下面以例子说明-----
c#
程序
在
调用
c++
dll
的时候需要注意问题。 (1)
c++
Windows进程常用
DLL
模块注入技术
课程结合多种Windows进程常用
DLL
注入技术。远程线程注入APC注入,异步
调用
过程,向目标线程插入待执行任务从而完成注入。窗口消息注入,指定窗口进程注入,与全局钩子注入类似。环境块注入,获取进程上下文信息,直接性修改
程序
执行流程完成注入。进程入口点注入,在
程序
初始化的时机前将
dll
模块文件注入至目标主线程。进程调试级注入,涉及调试器相关功能
调用
知识点
dll
模块重定位内存注入,模拟操作系统加载PE文件方式,直接将
dll
文件内存数据写入目标进程并执行。导入表注入,涉及PE相关知识点,增加区段,移动导入表,增加导入表、增加导出
函数
,修复表项数据等。内核驱动级
Dll
模块注入技术,内核驱动入门扩展。
C#
109,897
社区成员
642,645
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章