社区
C#
帖子详情
C#调c++ dll,函数参数为指向指针的指针的输出参数,需要在外面释放内存,如何调用
fengfeng2003
2006-07-16 03:47:40
c++ dll函数声明大概如下
void fun(double** DoubleArray)
{
}
DoubleArray是dll在函数内部分配的内存,按照调用规则需要在使用完doubleArray后,自己释放内存。这个在c++程序里面很容易,但是在C#里面应该怎么做呢,怎么写声明,如何释放内存
...全文
483
14
打赏
收藏
C#调c++ dll,函数参数为指向指针的指针的输出参数,需要在外面释放内存,如何调用
c++ dll函数声明大概如下 void fun(double** DoubleArray) { } DoubleArray是dll在函数内部分配的内存,按照调用规则需要在使用完doubleArray后,自己释放内存。这个在c++程序里面很容易,但是在C#里面应该怎么做呢,怎么写声明,如何释放内存
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fengfeng2003
2006-07-21
打赏
举报
回复
再up
关键是没有办法封装,因为dll传出的数组元素个数是不确定的
柒数信息
2006-07-18
打赏
举报
回复
这样转来转去很麻烦,以前我做的时候用c++托管代码把c++代码封装一下,然后在C#就可以直接用了,用起来和其他的.net类库一样方便
flycrystal
2006-07-17
打赏
举报
回复
Marshal.FreeHGlobal(IntPtr hglobal)
evlon
2006-07-17
打赏
举报
回复
因为每个进程在有单独的4G内存。
evlon
2006-07-17
打赏
举报
回复
哪个进程里申请的,应该在哪里释放。
如果C++没有提供,让他们提供,要不会有内存垃圾,
当然也有解决方法,可用用过程线程插入,在C++进程中新建线程来释放,感觉有点像写木马,哈。
mmens
2006-07-17
打赏
举报
回复
不好意思,写错了!
在托管代码中操作非托管类通过这个类进行:System.Runtime.InteropServices.Marshal.
你可以查一下MSDN。:)
mmens
2006-07-17
打赏
举报
回复
将Com计数归0:
System.Runtime.InteropServices.Marshal.ReleaseComObject(object obj);
将Com计数-1:
IntPtr pUnk = Marshal.GetIUnknownForObject(myComObject);
int refCount = Marshal.Release(pUnk);
zhwg1980
2006-07-17
打赏
举报
回复
关注
Fibona
2006-07-17
打赏
举报
回复
指针的指针**到C#用ref来做应该是就行了吧
fengfeng2003
2006-07-17
打赏
举报
回复
首先,在C#中如何声明呢
fengfeng2003
2006-07-17
打赏
举报
回复
再up一下
aSalt
2006-07-16
打赏
举报
回复
可以考虑在C++ 中加一个释放内存的方法.如 ArrayClear(), c# 中调用
fengfeng2003
2006-07-16
打赏
举报
回复
能具体说一下吗
hzw66
2006-07-16
打赏
举报
回复
可能用到这个类:
System.Runtime.InteropServices.Marshal
C#
调
用
C++
DLL
(
函数
参数
包含
指针
)
C#
调
用
C++
DLL
,
C++
DLL
中的
函数
参数
包含
指针
。 绝对可用。
C#
调
用
C
DLL
带
指针
参数
的函数
C#
调
用
C
DLL
带
指针
参数
的函数的实例.
基于
C#
调
用
c++
Dll
结构体数组
指针
的问题详解
下面小编就为大家分享一篇基于
C#
调
用
c++
Dll
结构体数组
指针
的问题详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
QT编写
DLL
调
用
示例 方法
参数
返回值 事件回
调
QT编写
DLL
给外部程序
调
用
示例 方法
参数
返回值 事件回
调
: 1:
C#
或者 NET 第一步:引入命名空间; using System Runtime InteropServices; 第二步:声明函数 必须与实际
DLL
中函数名及
参数
一致; [
Dll
Import "qt
dll
dll
" ] public static extern int add int i ; 第三步:
调
用
函数执行; Console WriteLine add 10 ToString ; 2:QT 第一步:引入头文件; #include <QLibrary> 第二步:定义函数
指针
以备
调
用
; typedef int Add int ; 第三步:载入
DLL
调
用
函数执行; QLibrary lib "qt
dll
dll
" ; lib load ; Add add Add lib resolve "add" ; add 50 ; 3:C或
C++
第一步:引入头文件; #include <windows h> 第二步:定义函数
指针
; typedef int Add int ; 第三步:载入
DLL
调
用
函数执行; HINSTANCE h
Dll
LoadLibrary "qt
dll
dll
" ; 载入
DLL
获取句柄 if h
Dll
NULL { Add add Add GetProcAddress h
Dll
"add" ; 获取函数地址 printf "%d" add 110 ; FreeLibrary h
Dll
;
释放
DLL
}">QT编写
DLL
给外部程序
调
用
示例 方法
参数
返回值 事件回
调
: 1:
C#
或者 NET 第一步:引入命名空间; using System Runtime InteropServices; 第二步:声明函数 必须与实际
DLL
中函数名及
参数
一致; [
Dll
Import "qt
dll
dll
" ] public static extern int add in [更多]
C#
用委托
调
用
C++
dll
中封装的函数
指针
程序想实现的功能是:
C++
已经封装好了串口发送接收的函数,接收端是使用的一个函数
指针
,客户端回
调
实现接收到数据,并且
C++
的MFC可以
调
用
。现在是想在
C#
中使用该
DLL
。 具体做法如下: 第一步,
C++
DLL
中先定义函数
指针
typedef void (*pfCallBack)(byte machStatus, byte dataLen, byte* pData, LPARAM por...
C#
110,502
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章