2010-05-10 40 views
1

前段時間,我創建了一個DLL用於另一個C程序。基本上,我通過使用我的DLL內的以下暴露特定的功能:從COBOL程序調用C(暴露)函數

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

然後,我添加外部文件(MyExposedDll.h)與所有暴露的功能和結構的新的C程序和包括它:

#include MyExposedDll.h 

現在我怎樣才能使用這個DLL(或主要是一個DLL)的Cobol功能?我需要公開一個具有兩個char*參數的函數並返回一個布爾值。

感謝, 孫

+0

你使用的是什麼cobol。 – 2010-05-10 15:52:24

+0

我不確定,我們正在使用z/OS。基本上我是創建c DLL的人。 – Sunscreen 2010-05-11 07:02:48

回答

3

這不應該與LE支持的IBM z/OS環境是困難的。

使用CALL語句的 COBOL CALL RETURNING 窗體捕獲布爾結果。字符串參數與COBOL CALL語句中的其他參數一樣傳遞。 唯一值得警惕的是C使用空字符串,而COBOL通常不使用空字符串。你應該檢查 如何handle null terminated strings在 COBOL。

看一看:Using COBOL DLLs with C/C++ programs這使顯示的C++函數返回一個函數指針調用一個很簡單的例子。

編輯 我可能已經錯過了你的問題的一部分......當你的COBOL程序鏈接編輯,您需要提供您的DLL導入文件,因此它可以被綁定。請參閱linking DLL's

EDIT 2

根據您的意見,我想你所運行的是在Z/OS盒子應用。 Visual Studio是一款基於PC的產品,所以我猜測你在那裏開發你的代碼,但在Z/OS下部署它?爲了讓COBOL程序識別你的DLL,你需要在C程序編譯時創建一個「副文件」。這個「副文件」包含鏈接器在COBOL程序鏈接時所需的DLL結構。您應該能夠從上面提供的鏈接中獲得流程。

+0

DLL的創作不會有任何個體差異,會嗎?我使用Visual Studio 5。 – Sunscreen 2010-05-11 06:54:14