2010-05-10 3 views
1

얼마 전에 다른 C 프로그램에서 사용할 DLL을 만들었습니다.COBOL 프로그램에서 C (노출 된) 함수를 호출합니다.

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

가 그럼 난 새로운 C 프로그램에 노출 된 모든 기능과 구조로 외부 파일 (MyExposedDll.h을)를 첨가하고, 그것을 포함 : 기본적으로 나는 내 DLL 내에서 다음을 사용하여 특정 기능을 노출

#include MyExposedDll.h 

이제이 dll (또는 주로 dll)을 Cobol 함수에 어떻게 사용할 수 있습니까? 2 개의 char* 인수가있는 함수를 공개하고 부울을 반환해야합니다.

덕분에, 일

+0

무슨 cobol을 사용하고 있습니까? –

+0

잘 모르겠습니다. 우리는 z/OS를 사용하고 있습니다. 기본적으로 나는 c DLL을 만드는 사람입니다. – Sunscreen

답변

3

이것은 LE 지원과 IBM Z/OS 환경에서 어렵지 않을 것이다.

COBOL CALL RETURNING 형태의 CALL 문을 사용하여 부울 결과를 캡처하십시오. 문자열 인수는 COBOL CALL 문에서 다른 인수와 마찬가지로 전달됩니다. 주의해야 할 유일한 것은 COBOL은 일반적으로 그렇지 않지만 C는 Null 종료 문자열을 사용한다는 것입니다. handle null terminated strings의 방법을 COBOL에서 검토해야합니다. 이 함수 포인터를 반환하는 C++ 함수를 호출을 보여주는 정말 간단한 예제를 제공 Using COBOL DLLs with C/C++ programs :

은 보라.

나는 당신의 질문의 일부를 놓친 편집 ... 당신의 COBOL 프로그램이 연결된 편집 할 때, 당신이 그것을 바인딩 할 수 있도록 당신의 DLL 가져 오기 파일을 제공해야합니다. linking DLL's을 참조하십시오. 귀하의 의견을 바탕으로

편집 2

, 나는 당신이 Z/OS 상자에서 응용 프로그램을 실행하는 가져 가라. Visual Studio는 PC 기반 제품이므로 코드를 개발했지만 Z/OS에서 배포하는 것으로 추측하고 있습니까? COBOL 프로그램이 DLL을 인식하게하려면 컴파일 될 때 C 프로그램에서 "사이드 파일"을 만들어야합니다. 이 "side file"은 COBOL 프로그램이 링크 될 때 링커가 필요로하는 DLL 구조를 포함합니다. 위에 제공된 링크를 통해 프로세스를 완성 할 수 있어야합니다.

+0

DLL을 만들 때 다른 점은 없습니다. Visual Studio 5를 사용합니다. – Sunscreen

관련 문제