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)行为正确。使用编译器的调试器或一个简单的 C 程序(您可以在其中调用 DLL 中的函数)对其进行测试将帮助您确定可能的困难是 DLL 本身固有的还是与 LabVIEW 相关的。

广告