如要从文本编程语言创建一个共享库,可在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文件的编写