1

前段时间,我创建了一个 DLL 用于另一个 C 程序。基本上,我通过在我的 dll 中使用以下内容公开了特定功能:

void __declspec(dllexport) MyFunc(myFirstArg, mySecondArg);

然后,我在新的 C 程序中添加了一个包含所有公开函数和结构的外部文件 (MyExposedDll.h),并将其包含在内:

#include MyExposedDll.h

现在我如何将这个 dll(或主要是 dll)用于 Cobol 函数?我需要公开一个有两个char*参数并返回一个布尔值的函数。

谢谢,孙

4

1 回答 1

3

这在具有 LE 支持的 IBM Z/OS 环境中应该不难。

使用 CALL 语句的 COBOL CALL RETURNING 形式捕获布尔结果。字符串参数与 COBOL CALL 语句中的任何其他参数一样传递。唯一需要注意的是 C 使用 Null 终止的字符串,而 COBOL 通常不使用。您应该查看如何在 COBOL中处理以空字符结尾的字符串。

看看:Using COBOL DLLs with C/C++ programs这给出了一个非常简单的示例,显示了对返回函数指针的 C++ 函数的调用。

编辑 我可能错过了您的部分问题...当您的 COBOL 程序被链接编辑时,您需要提供您的 DLL IMPORT 文件以便可以绑定它。请参阅链接 DLL 的.

编辑 2

根据您的评论,我认为您正在 Z/OS 机器上运行您的应用程序。Visual Studio 是基于 PC 的产品,所以我猜您是在那里开发代码,但在 Z/OS 下部署它?为了让 COBOL 程序识别您的 DLL,您需要在编译时从您的 C 程序创建一个“边文件”。此“边文件”包含链接器在链接 COBOL 程序时所需的 DLL 结构。您应该能够从上面提供的链接中获得该过程。

于 2010-05-10T16:03:35.707 回答