• LabView和DLL中的参数问题


     

    注意:在LabView中调用DLL函数时,一定要指定对应的参数类型,而不是选择“Adapt to Type”,否则会出错,不知道为什么书上是要选择“Adapt to Type”。

    以下做个参考:

    转自:https://wenda.so.com/q/1454926221721277?src=170

    指针 (Pointer)是在C语言中很重要的一种资料型态,并且是被广泛的被使用,所以当要用LabVIEW去呼叫C/C++所开发的DLL时,一定会遇到指针的问题,接着我会以传递及接收指标这两个方向来说明。

      一、传递指针到 DLL
      ①传递整数 (Integer)指标
      如果以下是我们呼叫的函式
      void ReturningValuesByReference_Integer(int x, int y, int *sum);
      我们要将资料传递到 *sum中,所以请在Data type栏位选择”Signed 32-bit Integer”,然后在Pass栏位选择”Pointer to Value”,如下图所示。
      

      ②传递阵列 (Array)资料
      我们以下列函式为例
      int PassingParamters_ArrayOfIntegers (int x[], int length);
      我们要将资料传递到阵列,此时也要使用指标的方式来传,请你在 Type栏位选择”Array”,Data type栏位选择”Singed 32-bit Integer”,Array format栏位选择”Array Data Pointer”,如下图所示。

      
      ③传递字串(String)指标
      以下列函式为例
      int PassingParamters_String (char *str);
      当我们要将资料传递到 *str中,请你在String format栏位选择”C String Pointer”,如下图所示。

      
      ④传递结构(Struct)资料
      以下例函式为例
      void ReturningValuesByReference_SimpleStruct (struct simpleStructCircle circle, struct simpleStructCircle *largerCircle);
      如果是传递结构的话,只需要将原本结构中的内容依序传入即可,以本函式为例 ”circle” 中含有三个浮点数分别是 x, y, radius,所以只要依序宣告即可,但若是遇到结构指标,请你在 Type 栏位选择 ”Adapt to Type” , Data format 栏位选择”Handles by Value”,如下图所示。
      

      二、从 DLL接收指标
      ①函式回传指标
      如果函式程式码如下
      int * ReturnAValue_PointerToInteger(void)
      {
      int *x = (int *) malloc(sizeof(int));
      *x = 5;
      return x;
      }
      所以我们可以知道函式本式回传整数指标,请你在 Type栏位选择” Numeric”,在Data type栏位选择”Signed Pointer-sized Integer”,如下图所示。
      

      ②以Reference型式回传
      我们以下列程式码为例
      void ReturningValuesByReference_Integer (int x, int y, int *sum)
      {
      //sum is a pointer
      *sum = x + y;
      }
      由程式可知,运算后的资料会放在*sum当中,所以请你在Data type栏位中选择”Pointer to Value”即可

  • 相关阅读:
    .NET体系结构
    命名空间和程序集
    网站不加www和.com 也能访问的设置
    如何从本机直接复制粘贴文件到服务器
    无法访问已释放的对象。 对象名:“System.ServiceModel.Channels.HttpChannelFactory+HttpRequestChannel”。
    silverlight 数据库更新,UI控件同步更新
    Apache Solr使用自定义QParser后同义词扩展及Token去重的感悟
    Apache Nutch 1.3 学习笔记十(插件机制分析)
    Apache Nutch 1.3 学习笔记十(Ntuch 插件机制简单介绍)
    Apache Nutch 1.3 学习笔记八(LinkDb)
  • 原文地址:https://www.cnblogs.com/zhengfa-af/p/8300983.html
Copyright © 2020-2023  润新知