游戏有点晚了,但您的问题可能是 C++ Builder 正在使用前导下划线装饰导出的函数。命令行实用程序应该有助于证明这TLIB
一点(假设 tlib 仍随 C++Builder 提供)
TLIB mydll.lib, mydll.lst
查看生成的 lst 文件,看看它是否包含StartTest
或_StartTest
. LabView 可能希望找到没有下划线的函数。
您可以将 DEF 文件添加到您的 C++Builder 项目中,该文件将取消前导下划线。试试这个:
使用 __cdecl 调用约定而不是 __stdcall。
导出普通的“C”函数。没有 C++ 类或成员函数。
- 确保你的函数原型周围有一个 extern "C" {}。
创建一个将导出函数别名为 Microsoft 兼容名称的 DEF 文件。为名称命名,使其不包含前导下划线。DEF 文件将如下所示:
出口;MSVC 名称 = C++Builder 名称 StartTest = _StartTest Foo = _Foo Bar = _Bar
5- 将 DEF 文件添加到您的 BCB DLL 项目并重建它。
查看这些古老的文章了解更多详情:
http ://bcbjournal.org/articles/vol4/0012/Using_Visual_C_DLLs_with_CBuilder.htm
反向文章(创建从 VC++ 创建的应用程序调用的 C++Builder DLL)隐藏在此存档中:
http://www.frasersoft.net/program/bcbdev.zip:/articles/bcbdll.htm。它更详细地描述了 DEF 文件技巧,以及一些其他选项。
请注意,我的回答是基于 1998 年左右的情况。从那时起,他们可能已经改变了。如果有,那么 C++Builder 命令行工具 impdef、tlib、tdump 以及这些工具的 Microsoft 等效工具应该能够准确地向您展示您的 DLL 与 MSVC 中的内容。
H^2