# Eclipse dll einbinden



## Kostik (20. Mai 2010)

Guten Morgen allerseits,
ich versuche verzweifelt ein SDK in Eclipse einzubinden und bekomme zur Laufzeit Fehlermeldung "Symbol not found".
*Womit ich arbeite: *

Eclipse C/C++ Version: 3.4.2
Mingw/GCC 3.4.2
PMDSDK 2.1.1 
*Was ich alles eingebunden habe*

pmdaccess2.lib : myProject-->Properties-->C/C++ Build -->Settings-->MinGW C++ Linker-->Libraries--> Den path eingetragen und Lib-Namen
pmdsdk2.h : myProject-->Properties-->C/C++ Build -->Settings-->GCC C++ Compiler-->Directories--> Den Path der HeaderFile
pmdaccess2.dll : myProject-->Properties-->C/C++ Build-->Environment-->eine Variable "PATH" erstellt und als Value den path der Datei angegeben
*Das Problem*
Soweit ich das sehe, ist die Einbindung der dll Datei fehlerhaft. Den nach dem Build werden die eingebundene Header Files und die aufgerufene Funktionen nicht als unbekannt markiert. Es tritt nur ein Fehler zur Laufzeit auf, wenn versucht wird eine Funktion der Header-Datei auszuführen. Ich habe auch schon die dll Datei in den Windows/system32 Ordner kopiert, leider ohne Erfolg.

Ich hoffe mir kann einer weiter helfen. Danke im Voraus!


----------



## deepthroat (20. Mai 2010)

Hi.

Wie ist die genaue Fehlermeldung? Welches Symbol wird nicht gefunden?

Ist dieses Symbol denn in der DLL enthalten (z.B. mit CFF Explorer Suite oder Dependency Walker nachschauen).

Gruß


----------



## Kostik (20. Mai 2010)

Hey,
also die Fehlermeldung die ich jetzt bekomme lautet: no source available for "_libmsvcrt_a_iname()".
Das ist die Fehlermeldung die ich bekomme, wenn den Code mit dem Debugger aufrufe. Wenn ich es als Application aufrufe, bekomme ich "MoCap.exe hat ein Problem festgestellt und muss beendet werden."


----------



## deepthroat (20. Mai 2010)

Kostik hat gesagt.:


> Hey,
> also die Fehlermeldung die ich jetzt bekomme lautet: no source available for "_libmsvcrt_a_iname()".
> Das ist die Fehlermeldung die ich bekomme, wenn den Code mit dem Debugger aufrufe.


Das ist irrelevant. Das heißt nur das der Debugger nicht den Code der genannten Funktion zur Verfügung hat.


Kostik hat gesagt.:


> Wenn ich es als Application aufrufe, bekomme ich "MoCap.exe hat ein Problem festgestellt und muss beendet werden."


Das deutet dann eher auf einen Programmierfehler / eine Exception hin.

Führe das Programm in der Kommandozeile aus.

Schau mit dem Dependency Walker nach ob irgendwelche DLLs nicht gefunden oder Symbole nicht aufgelöst werden können.

Gruß


----------



## Kostik (20. Mai 2010)

Danke für deine Mühe und für die Empfehlung des Programms "Dependency Walker" deepthroat!!
Dependency Walker hat bei mir keine Probleme festgestellt, somit lag ich falsch. Ich habe jetzt alle Zeilen auskommentiert und nur eine gelassen(unten zu sehen). Wenn ich die ausführe in der Kommandozeile oder auch so, bekomme ich die Fehlermeldung: Die Anweisung in "0x010b16b3" verweist auf Speicher in "0x00000004". Der  Vorgang  "read" konnte nicht auf dem Speicher durchgeführt werden. 
Ich frage mich, warum nicht?


```
// The handle is used to identify a connection 
	PMDHandle hnd;

	pmdOpen (&hnd, "pmdfile.W32.pcp", "2_personen.pmd","camcubeproc.W32.ppp","");
```

Mit pmdOpen baue ich eine Verbindung mit einer TOF-Kamera auf und die Pixel-Werte werden in hnd reingeschrieben.


----------



## deepthroat (20. Mai 2010)

Kostik hat gesagt.:


> Danke für deine Mühe und für die Empfehlung des Programms "Dependency Walker" deepthroat!!
> Dependency Walker hat bei mir keine Probleme festgestellt, somit lag ich falsch. Ich habe jetzt alle Zeilen auskommentiert und nur eine gelassen(unten zu sehen). Wenn ich die ausführe in der Kommandozeile oder auch so, bekomme ich die Fehlermeldung: Die Anweisung in "0x010b16b3" verweist auf Speicher in "0x00000004". Der  Vorgang  "read" konnte nicht auf dem Speicher durchgeführt werden.
> Ich frage mich, warum nicht?
> 
> ...


Es wird dort offenbar versucht 2 Plugins (in Form von DLLs) zu laden. Evtl. sind diese DLLs fehlerhaft oder die pmdOpen bzw. die DLLs versuchen auf eine Hardwareadresse zuzugreifen die nicht existiert (weil anders konfiguriert o.ä).

Wende dich evtl. mit einer Supportanfrage an den Hersteller / SDK Lieferanten.

Gruß


----------

