Labview互操作程序集,在c#和Labview之间交换映像
本文关键字:Labview 之间 交换 映像 互操作 程序集 | 更新日期: 2023-09-27 18:25:37
我用labview制作了一个interop assembly.net
dll,该dll接收一个图像参数,对该图像进行一些处理,然后返回图像。
在我将dll添加到我的c#.net
项目后,我无法弄清楚什么样的数据类型与labview中被引用为"LVBaseRefnum
"的图像数据类型相匹配。我以前已经成功地调用了简单的数据类型和集群类型,但我只是不知道什么c#数据类型与"LVBaserefnum
"匹配,或者什么数据类型与Image对象匹配。
另一方面,LVBaserefnum
有一个以int refnum为参数的构造函数。
LVBaseRefnum img = new LVBaseRefnum(int RefNum)
有人有主意吗?
我认为在Lab View应用程序生成器中有标准的C/C++构造函数
如果是,您有指针。在C#中,您必须将类和自编译程序集(我认为是互操作程序集)的用法声明为不安全
示例
class FileReader
{
const uint GENERIC_READ = 0x80000000;
const uint OPEN_EXISTING = 3;
IntPtr handle;
[DllImport("kernel32", SetLastError=true)]
static extern unsafe IntPtr CreateFile(
string FileName, // file name
uint DesiredAccess, // access mode
uint ShareMode, // share mode
uint SecurityAttributes, // Security Attributes
uint CreationDisposition, // how to create
uint FlagsAndAttributes, // file attributes
int hTemplateFile // handle to template file
);
[DllImport("kernel32", SetLastError=true)]
static extern unsafe bool ReadFile(
IntPtr hFile, // handle to file
void* pBuffer, // data buffer
int NumberOfBytesToRead, // number of bytes to read
int* pNumberOfBytesRead, // number of bytes read
int Overlapped // overlapped buffer
);