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)

有人有主意吗?

Labview互操作程序集,在c#和Labview之间交换映像

我认为在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
        );