Aide pour création d'une DLL
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 :roll:
Voici donc cette erreur :
Code:
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
Et mes fichiers :
Code:
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:
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;
//}
//}
} |
Code:
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 |
Comme vous pouvez le pouvoir il ne reste qu'une ligne qui ne soit pas commentée... (ligne 52 du .cpp)
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 :D
Merci