2010-05-10 7 views
1

Il y a quelque temps, j'avais créé une DLL à utiliser dans un autre programme C. Fondamentalement, j'exposé des fonctions spécifiques en utilisant les éléments suivants dans mon dll:Appelez la fonction C (exposée) du programme COBOL

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

Puis j'ai ajouté un fichier externe (MyExposedDll.h) avec toutes les fonctions et les structures exposées au nouveau programme C et l'a inclus:

#include MyExposedDll.h 

Maintenant, comment puis-je utiliser cette DLL (ou principalement un DLL) à une fonction Cobol? J'ai besoin d'exposer une fonction qui a deux arguments char* et retourne un booléen.

Merci, Sun

+0

Quel cobol utilisez-vous? –

+0

Je ne suis pas sûr, nous utilisons z/OS. Fondamentalement, je suis celui qui crée la DLL c. – Sunscreen

Répondre

3

Cela ne devrait pas être difficile dans un environnement IBM Z/OS avec prise en charge LE.

Capturez le résultat booléen en utilisant la forme COBOL CALL RETURNING de l'instruction CALL. Les arguments de chaîne sont passés comme n'importe quel autre argument dans une instruction COBOL CALL. La seule chose dont il faut se méfier, c'est que C utilise des chaînes terminées nulles alors que COBOL ne le fait généralement pas. Vous devriez examiner comment handle null terminated strings en COBOL.

Jetez un oeil à: Using COBOL DLLs with C/C++ programs cela donne un exemple très simple montrant un appel à une fonction C++ retournant un pointeur de fonction.

EDIT j'ai manqué une partie de votre question ... Lorsque votre programme édité lié COBOL est, vous devez fournir votre DLL le fichier d'importation peut donc être lié. Voir linking DLL's.

EDIT 2

Sur la base de vos commentaires, je suppose que vous exécutez votre application sur une boîte Z/OS. Visual Studio est un produit basé sur PC donc je devine que vous développez votre code là mais le déployer sous Z/OS? Pour que le programme COBOL reconnaisse votre DLL, vous devez créer un "fichier latéral" à partir de votre programme C lorsqu'il est compilé. Ce "fichier latéral" contient les structures DLL nécessaires à l'éditeur de liens lorsque le programme COBOL est lié. Vous devriez être en mesure d'obtenir le processus élaboré à partir des liens fournis ci-dessus.

+0

La création de la DLL n'aura pas de différences, n'est-ce pas? J'utilise Visual Studio 5. – Sunscreen

Questions connexes