2012-11-08 2 views
1

J'ai essayé de lier à une DLL tierce. J'ai essayé de 3 manières différentes: en compilant C dans Cygwin, en compilant C++ dans Visual Studio et en compilant C# dans Visual Studio. Chaque fois que je compile les programmes, je reçois les erreurs suivantes:Liaison avec DLL dans C/C#

Cygwin: undefined reference to '__imp__IEC61850_Create'

visuelle S: LNK2019: symbole externe non résolu '__imp__IEC61850_Create'

Comme vous pourriez avoir rassemblé, je J'essaie d'appeler la fonction 'IEC61850_Create' qui se trouve dans la DLL, mais elle apparaît toujours dans les erreurs avec le préfixe '__imp__'. Comme la DLL est une tierce partie, je ne peux pas voir la source. Dans d'autres endroits où j'ai cherché, les gens parlent généralement d'un fichier .o ou .lib. Dans ce cas, la seule ressource que j'ai est le fichier .dll.

Est-ce que quelqu'un d'autre a expérimenté quelque chose comme ceci, ou sait comment je peux lier à la bibliothèque? Je peux fournir un exemple de code si nécessaire.

Merci.

Répondre

1

Vous avez vraiment besoin d'un lien vers le fichier .lib, car il contient uniquement les stubs __imp__ nécessaires pour la liaison statique. Toutefois, vous pouvez créer un fichier .def et utiliser lib pour le convertir en fichier .lib.

Sinon, vous pouvez créer un projet fictif avec des fonctions vides pour créer un .dll et un fichier .lib, lien vers le fichier .lib, mais utiliser le vrai .dll avec le programme réel.

Pour plus d'informations, vous pouvez lire l'article 131313 de la base de connaissances Microsoft.