Bonjour,
Je cherche à créer une DLL dans VS me permettant d'accéder à une API écrite en C++ dans Delphi.
Mon problème est que le C++ est loin derrière moi et qu'après 10 lignes écrites déjà une erreur que je ne comprend pas
Voici donc cette erreur :Et mes fichiers :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 1>RimageAPI.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: static class Rimage::Rapid::Api::SingleConnectionSession * __cdecl Rimage::Rapid::Api::SingleConnectionSession::GetInstance(void)" (__imp_?GetInstance@SingleConnectionSession@Api@Rapid@Rimage@@SAPAV1234@XZ) référencé dans la fonction _RimageConnect
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 // RimageAPI.h*: fichier d'en-tête principal pour la DLL RimageAPI // #pragma once #include "afxwin.h" #include <RapidApiInclude.h> using namespace Rimage::Rapid::Api; #ifndef __AFXWIN_H__ #error "incluez 'stdafx.h' avant d'inclure ce fichier pour PCH" #endif #include "resource.h" // symboles principaux // CRimageAPIApp // Consultez RimageAPI.cpp pour l'implémentation de cette classe // class CRimageAPIApp : public CWinApp { public: CRimageAPIApp(); // Substitutions public: virtual BOOL InitInstance(); DECLARE_MESSAGE_MAP() }; extern "C" __declspec(dllexport) BOOL RimageInit(); extern "C" __declspec(dllexport) BOOL RimageConnect(const LPCTSTR client, const LPCTSTR host = NULL, const LPCTSTR port = NULL);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 // RimageAPI.cpp*: définit les fonctions d'initialisation pour la DLL. // #include "stdafx.h" #include "RimageAPI.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CRimageAPIApp BEGIN_MESSAGE_MAP(CRimageAPIApp, CWinApp) END_MESSAGE_MAP() // construction CRimageAPIApp CRimageAPIApp::CRimageAPIApp() { // TODO*: ajoutez ici du code de construction, // Placez toutes les initialisations significatives dans InitInstance } // Seul et unique objet CRimageAPIApp CRimageAPIApp theApp; // initialisation de CRimageAPIApp BOOL CRimageAPIApp::InitInstance() { CWinApp::InitInstance(); return TRUE; } BOOL RimageInit() { //SingleConnectionSession* pConnSession = SingleConnectionSession::GetInstance(); //pConnSession->SetDefaultJobListener(); return TRUE; } BOOL RimageConnect(const LPCTSTR client, const LPCTSTR host, const LPCTSTR port) { return TRUE; SingleConnectionSession* pConnSession = SingleConnectionSession::GetInstance(); //if(!pConnSession->IsConnected()) //{ // pConnSession->Connect(client, host, port); // return TRUE; //} //else // if already connected //{ //Connection* pConection = pConnSession->GetConnection(); //if(_tcsicmp(pConection->GetHost(), host)!=0) //{ // // Disconnect the old one, make a new connection // pConnSession->Disconnect(); // pConnSession->Connect(client, host, port); // return TRUE; //} //else //{ // return FALSE; //} //} }Comme vous pouvez le pouvoir il ne reste qu'une ligne qui ne soit pas commentée... (ligne 52 du .cpp)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ; RimageAPI.def : déclare les paramètres de module pour la DLL. LIBRARY "RimageAPI" EXPORTS ; Les exportations explicites peuvent être placées ici RimageInit @1 RimageConnect @2
Il semble que les objets que j'utilise soient mal référencés pourtant VS arrive à accéder aux définitions.
Bref si certains d'entre vous peuvent m'aiguillez
Merci
Partager