(28.04.2011 11:47 )jak888 schrieb: Hi,
ein Problem, bei der Übergabe des CAN Frames an das CAN Modul ist denke ich, dass das Programm einen Pointer auf eine Struct erwartet.
Ich habe zwar die entsprechende Struct zusammengebastelt und die DLL mit Adapt to type und pointers to handles intialisiert, aber da empfängt das Modul gar nichts.
Ich denke, dass ich das Problem umgehen kann, indem ich eine Wrapper dll schreibe.
Dazu hab ich mir gerade dieses Tutorial durchgelesen und es hat sogar funktioniert das Volumen eines Quaders damit zu berechnen. (Und dass obwohl pointer übergeben werden mussten)
Soweit bin ich eigentlich also in der Materie drin. Eine frage bleibt mir allerdings noch: Wie kann ich eine Dll in die Dll einbinden?
Kann ich DLL so schreiben, wie ein Programm, welches die DLL nutzt?
Was hast Du denn für einen Cluster gebastelt? Adapt to Type ist richtig, aber Pointer to Handles tut gar nichts, da Du keine Arrays und Strings übergibst sondern eben einen Cluster.
Eine DLL bindet man in eine andere DLL ein, indem man entweder diese DLL explizit mit LoadLibrary() lädt und dann mit GetProcAddress() Funktionspointer auf die exportierten Funktionen erhält, oder implizit indem man die entsprechende Importlibrary (*.lib) der zu importierend DLL in das DLL Project mit einbezieht. Diese Importlibrary kommt mit der entsprechenden DLL, da sie beim Erstellen der DLL miterzeugt wurde, und enthält im wesentlichen maschinenerzeugten Code, der LoadLibrary() und GetProcAddress() aufruft. Wenn Du keine Importlibrary hast oder die mitgelieferte nicht für Deinen Compiler arbeitet (Importlibraries sind binaire Files die Compilerspezifische Formate haben) dann gibt es bei jedem Compiler auch ein Commandlinetool mit dem man für einer DLL eine solche Importlibrary erstellen kann.