如要从文本编程语言创建一个共享库,可在LabVIEW中创建一个函数原型,然后添加细节部分的代码。当LabVIEW要生成函数原型时,必须确保共享库中代码的基本语法合法有效。创建的原型源文件是一个.c文件,其中包含了传递参数的C语言声明。

按照下列步骤,创建一个名为myshared.c的原型源文件。

  1. 打开一个新的空白VI,将该VI保存为Array Average。该函数用于计算一个数值数组的平均值。
  2. 在程序框图上放置调用库函数节点。
  3. 右键单击“调用库函数节点”,从快捷菜单中选择配置,打开调用库函数对话框。
  4. 不要填写库名或路径。
备注 库名或路径用于指定“调用库函数节点”所调用共享库。
  1. 输入以下常规参数:
    1. 在函数名中输入avg_num。
    2. 在调用规范栏中选择C。
  2. 使用以下设置,定义返回值:
    1. 找到调用库函数对话框的参数选项卡。
    2. 在名称控件中,将默认名return type改为更具体的名称error。
    3. 从类型下拉菜单中选择数值。
    4. 从数据类型下拉菜单中选择有符号32位整型。
  3. 使用以下设置,定义参数a:
    1. 单击参数列表右侧的添加参数按钮。
    2. 将名称栏的默认名称参数1替换为a。
    3. 从类型下拉菜单中选择数组。
    4. 从数据类型下拉菜单中选择4字节单精度。
    5. 从数组格式下拉菜单中选择数组数据指针。
  4. 使用以下设置,定义参数size:
    1. 单击参数列表右侧的添加参数按钮。
    2. 将名称栏中的默认名称参数2替换为size。
    3. 从类型下拉菜单中选择数值。
    4. 从数据类型下拉菜单中选择有符号32位整型。
    5. 从传递下拉菜单中选择值。
  5. 使用以下设置,定义参数avg:
    1. 单击参数列表右侧的添加参数按钮。
    2. 将参数栏中的默认名称参数3改为avg。
    3. 从类型下拉菜单中选择数值。
    4. 从数据类型下拉菜单中选择4字节单精度。
    5. 从传递下拉菜单中选择指针。
  6. 检查函数原型栏是否显示了返回值,3个参数是否按下列正确顺序显示:int32_t avg_num(float *a, int32_t size, float *avg);
注:函数原型栏中的语法在理论上是正确的。但是,由“调用库函数节点”生成的.c文件更为准确,其中的第一个参数为float a[]。
  1. 单击确定按钮,保存当前设置并关闭对话框。
  2. 注意,“调用库函数节点”图标已根据用户的设置而更新。
  3. 右键单击“调用库函数节点”并从快捷菜单中选择创建C文件。
  4. 将文件保存为myshared.c。
注:此范例中使用的是.c源文件。如使用的是C++库,应将源文件扩展名改为.cpp。

防止C++名称修饰

在头文件中使用C++编译器函数导出规则extern "C"{},避免在轧名过程中导出的函数名称产生与所在平台相关的依赖性。如下列代码所示:

extern "C" { int32_t MyDLLFunction(int32_t nInput, uint32_t nOutput, void *arg1); }

int32_t MyDLLFunction(int32_t nInput, uint32_t nOutput, void *arg1)

{

/* Insert Code Here */

}

注:如禁用C++的函数修饰,编译器将无法创建函数的多态版本。

创建函数原型后,可完成.c文件的编写。