lima-city: Webhosting, Domains und Cloud
1 Pluspunkt 0 Minuspunkte

Ich habe ein Programm in C++ indem ich DLL Dateien zur Laufzeit laden möchte.

std::string pluginFolder = "./";
std::vector<std::string> dllFiles = getDllFiles(pluginFolder);
std::vector<MyLibrary*> loadedLibraries;
for (const std::string& dllPath : dllFiles) {
	MyLibrary* myLib = new MyLibrary(dllPath.c_str());  
	if (!myLib->IsValid()) {
		delete myLib;
		continue;
	}
	MyFunction myFn = (MyFunction)myFn->GetFunction("register");
	if (myFn) {
		myFn(&interpreter);
		loadedLibraries.push_back(myLib);
	} else {
		delete myLib;
	}
}

Das Problem ist aber wenn ich das Programm im PATH stehen habe dann lädt es die DLL Dateien nicht weil er sie im aktuellen Verzeichnis sucht. Wie kann ich machen, dass die DLL Dateien aus dem Verzeichnis geladen werden worin die EXE Datei liegt oder einem anderen Unterordner davon?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Den Ausführungspfad unter Windows kannst du mit der Funktion GetModuleFileNameA() aus der Windows-API erstellen.

char buffer[MAX_PATH];
GetModuleFileNameA(NULL, buffer, MAX_PATH);
std::string execPath = std::string(buffer);
size_t lastSlash = execPath.find_last_of("\\/");
std::string realExecPath = execPath.substr(0, lastSlash);
von (718 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.3k Fragen

2.8k Antworten

261 Kommentare

13 Nutzer