Erstellte .dll kann unter dll beim externen aufruf nicht finden
-
Hallo,
ich weiß nicht ob ihr mir helfen könnt, weil sich das doch alles sehr mit der Ordernstruct und den einstellungen zu tun hat. Aber ich fang mal an.Also ich habe zwei Projekte. Eines erstellt eine dll das ander soll diese aufrufen.
Die Dll kombiliert ohne fehler sobald ich nun eine funktion der dll aufrufe kommt die fehlermeldung: Kann vxlapi.dll nicht finden eine Neuinstalation...
vxlapi.dll ist eine fertige dll, die ein API zurverfügung stellt und nur von meiner dll verwendet wird nicht von dem aufrufenden programm.
So zur Ordnerstruktur:
work -> hauptordner enthält die ordner
bin( hier stehen bei zu ladenen dll's)
router (läd die Dll)
Mydll (projekt der dll output ist aber work/bin)alle projekte Kompilieren und Linken ohne Probleme.
Verwende Microsoft VS 2008
In den Projekten (beide) habe ich als Properties:
c/c++ additional Properties c\work\bin angegenen
Linker ebenfallsHab auch schon mit dem Dependency Walker in dll geschaut (beide) sind soweit OK
Include der Mydll ist
#include "stdafx.h" #include <iostream> #include <stdio.h> #include "Init.h" #include "vxlapi.h"
des Routers
#include "stdafx.h" #include <windows.h> #include <string> #include <stdio.h> #include <iostream> #include <list> #include <stdlib.h> #include <sstream> #include "Routermodul.h" #include "vxlapi.h"
Fehler tritt auf sobald ich
hinstLib = LoadLibrary(L"../../bin/VectorCanDll.dll");
im Router projekt mache. Und in der dll Funktionen der vxlapi.dll verwende (datentypen gehen komischer weise)
Vielleicht kann mir jemand helfen
-
VectorCanDll.dll = Mydll
-
Ich verstehe ganz ehrlich Dine Ordner Struktur nicht.
Von sich aus sucht Windows nicht in untergeordneten Ordnern nach anderen DLLs die implizit geladen werden sollen. Alle Deine DLLs müssen also zum Ausführen in einem Ordner stehen.
Meine Projekte haben deshlab alle ein Bin Verzeichnis mit Debug und Release Unterordnern in die alle Teilprojekte Ihre Binaries abwerfen.
-
Auch die Mischung von C und C++ Headern, wie in deinem Quelltext, kann einem im Zusammenhang mit DLLs verstärkt Ärger bereiten.
MfG f.-th.