我必须支持使用旧 Borland 编译器 (BC 5) 用 C 编写的旧应用程序。
不幸的是,我们使用的旧 TCP/IP 库开始显示出它的年龄,并且在 Vista 和 Win7 机器上出现问题。
我有一个新的可用于 MS Visual C++ 的函数库,我想用它来制作一个可以从 Borland C 调用的 DLL。
所以,我有两个问题: 1) 如何使 Visual C++ DLL 可从 Borland C 程序调用,以及 2) 如果它是可调用的,如何从普通的旧 C 调用 C++ 函数?
理想情况下,整个项目都应转换为 Visual C,但有许多遗留功能将使该项目成为一项重大任务!我正在寻找一个快速补丁来让它存活更长时间:)
史蒂夫
最佳答案
使用 Visual C++ 编写一个 DLL,将其接口(interface)公开为 Windows STDCALL C 函数。 Windows API 函数以类似方式完成。您在界面中公开的那些功能将执行您需要在程序中替换的功能。在 DLL 中,放弃调用新的 MS VC++ 库。
因此,要获得一个可从 C 调用并使用 STDCALL 堆栈协议(protocol)的函数,请执行以下操作:
extern "C"int __stdcall foo();
您还必须添加信息以从 DLL 导出函数。您可以在声明中明确地这样做:
extern "C"__declspec(dllexport) int __stdcall foo();
但是您需要一个单独的头文件用于您的 BorlandC 代码(它可能有不同的语法来指定 DLL 导入部分和 STDCALL 部分)。在 Visual C++ 中,您将在客户端中使用的声明类似于:
extern "C"__declspec(dllimport) int __stdcall foo();
关于c++ - 在旧的 Borland C 中使用 Visual C++ DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4599357/