在旧Borland C中使用Visual C++ DLL?

Ste*_*063 7 c c++ dll visual-c++ turbo-c

我必须使用旧的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,但是有许多遗留功能可以使该项目成为一项重大任务!我正在寻找一个快速的补丁来让它保持活力一段时间:)

史蒂夫

gre*_*egg 6

使用Visual C++编写DLL,将其接口公开为Windows STDCALL C函数.Windows API函数类似地完成.您在界面中公开的那些功能将执行您在程序中替换所需的功能.在DLL内部,放弃调用新的MS VC++库.

因此,要获得一个可从C调用并使用STDCALL堆栈协议的函数,请执行以下操作:

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();