OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 3295|回复: 0

c#与c++的dll传递数据

[复制链接]
发表于 2017-6-2 11:45:54 | 显示全部楼层 |阅读模式
c++:
#include "stdafx.h"
#include <iostream>
#include <opencv2\opencv.hpp>
#include <windows.h>
using namespace std;
using namespace cv;
extern "C"  __declspec(dllexport) int DC_iR_DF01EF08Info(
HANDLE hDev,
char* ZJLB,
char* ZJHM,
char* JKDAH,
char* XNHZH,
char* errInfo,
char &eigjlie
) {
Mat C = (Mat_<uchar>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
eigjlie = (char)(C.at<uchar>(1, 2));
char *tem;
tem = (char*)C.data;
lstrcpyA(ZJLB, tem);
// lstrcpyA(ZJLB, "01");
lstrcpyA(ZJHM, "110114198003211235");
lstrcpyA(JKDAH, "11011419800321123");
lstrcpyA(XNHZH, "110114198003211235");
return 0;
}
c#
[DllImport("try_test.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        extern static int DC_iR_DF01EF08Info(
                IntPtr hDev,
                [Out][MarshalAs(UnmanagedType.LPStr, SizeConst = 128)]StringBuilder ZJLB,
                [Out][MarshalAs(UnmanagedType.LPStr, SizeConst = 128)]StringBuilder ZJHM,
                [Out][MarshalAs(UnmanagedType.LPStr, SizeConst = 128)]StringBuilder JKDAH,
                [Out][MarshalAs(UnmanagedType.LPStr, SizeConst = 128)]StringBuilder XNHZH,
                [Out][MarshalAs(UnmanagedType.LPStr, SizeConst = 128)]StringBuilder errInfo,
                IntPtr eigjlie
            );
调用函数:
          IntPtr k = new IntPtr();
           DC_iR_DF01EF08Info(IntPtr.Zero, zjlb, zjhm, jkdah, xnhzh, errinfo,k);
zjlb为空,k也取不到值,似乎是因为Mat在程序结束后会自动释放内存,那我应该怎么改呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-4-26 00:05 , Processed in 0.008509 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表