Problème de dll et lib en C++

cs_sidhannowe Messages postés 75 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 11 décembre 2007 - 11 déc. 2007 à 15:26
cs_sidhannowe Messages postés 75 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 11 décembre 2007 - 11 déc. 2007 à 19:45
Salut,

C'est peut etre un problème récurrent sur le net mais après des heures de recherche je n'ai toujours pas trouvé de solution.

Je dois utiliser une librairie de commande d'un robot pour un projet d'étude, oppaccess. On m'a fourni 3 fichiers oppaccess.dll, oppaccess.lib et oppaccess.h

Pour l'exemple voici un programme minimaliste qui essaye de lancer une des fonctions de la librairie

#include <cstdlib>
#include

#include "wlib/oppaccess.h"

using namespace std;

int main(int argc, char *argv[])
{
    oppaccessStartup();
    system("PAUSE");
    return EXIT_SUCCESS;
}

Je spécifie correctement dans les options de linkage la librairie "-Lwlib -lOppAccess" (je suis sous dev c++). J'ai ajouté "extern "C" __declspec (dllimport)" devant la déclaration des fonctions dans le .h

Le programme compile mais ne linke pas, voici l'erreur:

main2.o(.text+0x12b):main2.cpp: undefined reference to `_imp__oppaccessStartup@0'

J'ai entendu parler des .def mais cela ne fonctionne pas non plus

LIBRARY        oppaccess.dll
DESCRIPTION    'oppaccess'

EXPORTS
    ; Explicitly exported initialization routine
    oppaccessStartup = _imp__oppaccessStartup@0

Peut etre faut-il "dire" au linker quel fichier .def utiliser mais je n'ai pas trouvé l'info, j'ai cru comprendre qu'une le nommant oppaccess.def cela suffisait

Merci pour votre aide

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 déc. 2007 à 16:22
devcpp sait linker avec un lib ?

Utilise VC++, voire ici:
http://www.cppfrance.com/code.aspx?ID=38359

ciao...
BruNews, MVP VC++
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
11 déc. 2007 à 18:27
Oui devcpp link les .lib et les .a..

Neo_Fr
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
11 déc. 2007 à 18:44
Non pas toujours. D'après ce que j'ai pu lire, les .lib MS et borland ne sont pas compatibles.

[auteur/SIDHANNOWE/185222.aspx sidhannowe] >> "J'ai ajouté "extern "C" __declspec (dllimport)" devant la déclaration des fonctions dans le .h"
Es-tu sûr que tu devais ajouté ça justement ?
Si oui, essais, par exemple:
extern "C" void __stdcall nom_de_fonction (void);

Dans tout les cas, il est vrai que devcpp a été abadonné et qu'aucune autre mise à jours ne sortira, du moins, pas dans un avenir proche.
Il serait donc judicieux de changer d'IDE.
Code::Blocks ou VC++ comme précisé par brunews.

C++ (@++)<!--
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
11 déc. 2007 à 18:57
Pour ma part j'ai jms eu de pbs pr linker des libs compiler avec VC..
Au pire si ca marche tjrs pas tu peux utiliser LoadLibrary et GetProcAddress.

Neo_Fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_sidhannowe Messages postés 75 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 11 décembre 2007
11 déc. 2007 à 19:45
Merci pour votre aide le soucis est réglé. Cela était du à une constante devant la déclaration des fonctions du .h. Maintenant j'ai d'autre soucis de plantage mais c'est une autre histoire lol
0
Rejoignez-nous