c#调用C++写的DLL,DLL中的接口参数有二维数组(如:char**),在c#中如何将二维数组传入?
这个问题也可以解释为非托管数据与托管数据之间的封装处理。很想知道怎么样才能取消C#对非托管数据的写保护。
C#里会对char*类型写保护,原因是C语言的char*类型其实是一个指针,输入非托管数据,调用DLL,从C#传char【】到函数里,改动不了。会报错,内存写保护。
c#调用C++写的DLL,DLL中的接口参数有二维数组(如:char**),在c#中...
我没有发现有什么问题,使用[DllImpor[("你需要引用的DLL")] private static extern 返回类型 需要引用的接口函数(你要用到的数组)。既然是C++写的DLL,那么应该有针对这个数组的方法的,就象C#中的get和set。它与C#这种不同的,即使它在DLL中被声明成全局参数也不无法在C#中直接被导入引用的。
c#调用C++写的DLL,DLL中的接口参数有二维数组(如:foat**),在c#中...
综上所述,C#不能直接调用Test(float** arr,int rows,int cols),你必须使用非安全代码构造一个single*[],然后将这个数组传递过去。下面是一个例子 [DllImport("test.dll")]static extern unsafe bool Test(float*[] arr, int row, int col);\/\/这里arr要声明为float*[],使用起来比较方便 bool...
用C#写的DLL,如何返回一个二维数组给VBS读取?
首先从错误的信息,我们可以知道类型c# 返回的数组类型 和 vbs 用的数组 类型不匹配。于是我尝试把c# lib里面的返回数据类型 强制转换为object, 才得以解决问题。正确的解题步骤:1. class lib 的代码如下 using System;using System.Collections.Generic;using System.Linq;using System.Text;using Syste...
C++中二维数组作为参数传递到一个函数
方法1、 第一维的长度可以不指定;但必须指定第二维的长度。include <stdio.h> void print_a(int a[][5], int n, int m){ int i, j;for(i = 0; i < n; i++){ for(j = 0; j < m; j++)printf("%d ", a[i][j]);printf("\\n");} } 方法2、指向一个有5个元素一...
c++中二维数组长度如何设置为键盘输入的变量?
首先,声明一个指向要实现的数组的数据类型的指向一维指针数组的指针(2级指针)。例如int **p[] (格式应该是这样的吧)然后用输入分配一维指针数组的大小 然后再分配每个指针指向空间的大小 使用时用指针代替数组名就行了,如:p[2][0] 代替a[2][0]嘎嘎……还是在眼前写的程序里发现了这个代码...
C++调用二维数组问题,急急急,mwArray
double x[4] = {1,2,3,4};double y[4] = {2,3,4,5};double z[4] = {4,5,6,6};然后传的时候用数组名就行了,因为数组名就是double *.X.SetData(x,4);Y.SetData(y,4);Z.SetData(z,4);祝楼主好运!
c语言c++语言如何用二维数组做形参?
C\/C++中,二维数组的第一维的每一个元素都是一维数组。所以,用指向一维数组的指针或用第一维维数空缺的二维数组作为函数的形式参数都能达到目的。设处理数组为int型,举例代码如下:\/\/#include "stdafx.h"\/\/If the vc++6.0, with this line.#include "stdio.h"void myprint(int (*p)[5]){...
C++函数调用二维数组
aa[i] = new char [n];这样给函数传递参数function((char**)array),但这样在实际的函数调用是,我们就要进行强制转换才可以用;在函数调用时,要把数组形式写成指针形式如*((int*)array + n*i + j);直接写char array[i][j]会导致错误,编译可以通过,在VC编译器中执行会出现异常...
编写一个程序,声明两个3行4列的二维数组,将其中一个数组初始化,再将此...
首先,应该在C#语言源程序中声明外部方法,其基本形式是:[DLLImport(“DLL文件”)]修饰符 extern 返回变量类型 方法名称 (参数列表)其中:DLL文件:包含定义外部方法的库文件。修饰符: 访问修饰符,除了abstract以外在声明方法时可以使用的修饰符。返回变量类型:在DLL文件中你需调用方法的返回变量类型。方法名称:在DLL文件...
C#调用一个C++写的Dll有个指针数组改怎样传递呢?
指针是地址引用,在c#中用ref做地址引用,查下ref的用法就行了