DLL - 提示

编写 DLL 时请牢记以下提示 −

  • 使用正确的调用约定(C 或 stdcall)。

  • 注意传递给函数的参数的正确顺序。

  • 切勿使用直接传递给函数的参数调整数组大小或连接字符串。请记住,您传递的参数是 LabVIEW 数据。更改数组或字符串大小可能会覆盖存储在 LabVIEW 内存中的其他数据,从而导致崩溃。如果您传递 LabVIEW 数组句柄或 LabVIEW 字符串句柄并使用 Visual C++ 编译器或 Symantec 编译器编译 DLL,则可以调整数组大小或连接字符串。

  • 将字符串传递给函数时,请选择要传递的正确字符串类型。 C 或 Pascal 或 LabVIEW 字符串句柄。

  • Pascal 字符串的长度限制为 255 个字符。

  • C 字符串以 NULL 结尾。如果您的 DLL 函数以二进制字符串格式返回数值数据(例如,通过 GPIB 或串行端口),它可能会返回 NULL 值作为数据字符串的一部分。在这种情况下,传递短(8 位)整数数组是最可靠的。

  • 如果您正在使用数组或数据字符串,请始终传递一个足够大的缓冲区或数组,以容纳函数放置在缓冲区中的任何结果,除非您将它们作为 LabVIEW 句柄传递,在这种情况下,您可以使用 Visual C++ 或 Symantec 编译器下的 CIN 函数调整它们的大小。

  • 如果您使用 _stdcall,请在模块定义文件的 EXPORTS 部分列出 DLL 函数。

  • 在模块定义文件的 EXPORTS 部分列出其他应用程序调用的 DLL 函数,或在函数声明中包含 _declspec (dllexport) 关键字。

  • 如果您使用 C++ 编译器,请在头文件中使用 extern .C.{} 语句导出函数,以防止名称混乱。

  • 如果您正在编写自己的 DLL,当 DLL 被另一个应用程序加载到内存中时,您不应重新编译该 DLL。在重新编译 DLL 之前,请确保使用该特定 DLL 的所有应用程序都已从内存中卸载。这可确保 DLL 本身未加载到内存中。如果您忘记了这一点,并且您的编译器没有警告您,则可能无法正确重建。

  • 使用另一个程序测试您的 DLL,以确保该函数(和 DLL)正常运行。使用编译器的调试器或可以调用 DLL 中的函数的简单 C 程序对其进行测试,将有助于您确定可能的困难是 DLL 固有的还是与 LabVIEW 相关的。