Je n'arrive pas à comprendre où il y a une erreur. Je crée une DLL et ensuite l'utilise dans un programme de console C++ (Windows 7, VS2008). Mais je reçois LNK2019 unresolved external symbol
en essayant d'utiliser les fonctions DLL.C++ exporter et utiliser la fonction dll
d'abord l'exportation:
#ifndef __MyFuncWin32Header_h
#define __MyFuncWin32Header_h
#ifdef MyFuncLib_EXPORTS
# define MyFuncLib_EXPORT __declspec(dllexport)
# else
# define MyFuncLib_EXPORT __declspec(dllimport)
# endif
#endif
Ceci est un fichier d'en-tête que je puis utiliser dans:
#ifndef __cfd_MyFuncLibInterface_h__
#define __cfd_MyFuncLibInterface_h__
#include "MyFuncWin32Header.h"
#include ... //some other imports here
class MyFuncLib_EXPORT MyFuncLibInterface {
public:
MyFuncLibInterface();
~MyFuncLibInterface();
void myFunc(std::string param);
};
#endif
Ensuite, il y a le dllimport dans le programme de la console, qui a la DLL inclus dans le Linker -> Général-> Répertoires de bibliothèques supplémentaires:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
__declspec(dllimport) void myFunc(std::string param);
int main(int argc, const char* argv[])
{
std::string inputPar = "bla";
myFunc(inputPar); //this line produces the linker error
}
Je ne peux pas comprendre ce qui ne va pas lui e; ça doit être quelque chose de vraiment simple et fondamental.
Bonne réponse; essentiellement ce que j'ai remarqué. De plus, la fonction n'est pas déclarée statique, vous avez donc besoin d'une instance de la classe pour appeler la fonction. –
Je ne comprends pas assez les answear. Est-ce que je suis supposé enlever l'Interface.h des #imports et le définir et l'inclure avec le projet de console? Pouvez-vous être un peu plus précis. –
@ inf.ig.sh: Si vous voulez utiliser la classe à partir du projet console, vous devez inclure le .h dans le projet console. Le projet console doit voir la classe déclarée comme * dllimport * afin qu'il recherche l'implémentation réelle dans une DLL. – Erik