Je veux écrire un dll pour un API d'un périphérique. depuis que je suis nouveau à dlls je voulais l'implémenter sur un éditeur de texte simple, puis en faire un pour l'API. J'ai fait un fichier d'en-tête et un fichier cpp mais quand j'exécute le code, j'obtiens l'erreur lnk2001 suivie par lnk1120 qui est une erreur externe non résolue.Erreur de lien DLL C++
Je n'ai vraiment aucune idée d'où j'ai fait une erreur, pour autant que je vois que je l'ai fait dans le bon sens. Je me demandais si vous pouviez m'aider. tnx.
ici est mon fichier d'en-tête
// EditFuncsDll.h
#include <cstdio>
#include <vector>
#include <string>
namespace EditFuncs
{
class MyEditFuncs
{
private:
static std::vector<std::string> MyTextBox;
public:
static __declspec(dllexport) void Load(std::string command);
static __declspec(dllexport) void Save(std::string command);
static __declspec(dllexport) int Lines();
static __declspec(dllexport) void Add(std::string command);
static __declspec(dllexport) void Remove(std::string command);
static __declspec(dllexport) void Insert(std::string command);
static __declspec(dllexport) int wc(std::string command);
static __declspec(dllexport) void GetInfo();
};
}
et dans mon fichier cpp i définir simplement les fonctions i dans le fichier Déclaré en-tête.
et ce sont les erreurs que je reçois
Erreur 25 erreur LNK2001: symbole externe non résolu « private: static class std :: vecteur, classe std :: allocateur>, classe std :: allocateur, classe std :: allocateur>>> EditFuncs :: MyEditFuncs :: MyTextBox "(? MyTextBox @ MyEditFuncs @ ModifierFuncs @@ 0V? $ vector @ V? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocateur @ D @ 2 @@ std @@ V? $ Allocateur @ V? $ Basic_string @ DU? $ Char_traits @ D @ std @@ V? $ Allocateur @ D @ 2 @@ std @@@ 2 @@ std @@ A) C: \ Users \ Lucy \ Desktop \ Erfan \ Text_Editor_DLL \ Text_Editor_DLL \ EditFuncsDll.obj Text_Editor_DLL
et
Erreur 26: erreur LNK1120 1 externals non résolues C: \ Users \ Lucy \ Desktop \ Erfan \ Text_Editor_DLL \ Debug \ Text_Editor_DLL.dll Text_Editor_DLL
@Assem mais je suis juste en train de définir les fonctions dans le fichier cpp c'est la cpp fichier de l'en-tête pas le cpp principal. Je ne pense pas que je devrais le définir là. devrais-je? – Erfan
vous devez définir chaque variable de membre statique déclarée dans le cpp correspondant. Il suffit de l'écrire avant la définition de vos fonctions dans le fichier .cpp. BTW, je devrais corriger ce que j'ai écrit dans le commentaire précédent: std :: vector EditFuncs :: MyEditFuncs :: MyTextBox; – Assem
@Assem voici une partie de mon cpp '// EditFuncsDll.cpp #include "EditFuncsDll.h » #include #include using namespace std; EditFuncs d'espace de noms { \t std :: statique vecteur MyTextBox; \t MyEditFuncs vide :: Load (chaîne de commande) \t { \t \t chaîne nom de fichier; \t \t // Le nom du fichier commence au cinquième caractère de la commande et va à la fin \t \t fichier name = command.substr (5, command.size()); \t \t ifstream inFile; \t \t inFichier.open (nomfichier); ' donc en fonction de ce que vous avez dit j'ai ajouté la définition de cette variable statique, mais j'ai toujours la même erreur. Je ne sais pas pourquoi! –
Erfan