INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

DLL einbinden mit "void * func"



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

14.10.2011, 17:00
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: DLL einbinden mit "void * func"
(14.10.2011 15:23 )kaiman schrieb:  Ok, die Mondphase kann ich ausschließen - obwohl...wir haben gerade Vollmond...
In der Beschreibung steht nur, dass ich für Img ausreichend Speicher allozieren muss mit einer Größe von (1728 + 153600)bytes für ein 320*240 Bild. Jedes Pixel hat 16bit, weshalb also jedes Pixel 2 byte braucht. Da aber ja mit "void * Img" nur der Zeiger auf den allozierten Speicher übergeben wird (soweit mein Verständnis) ist da nichts genaueres definiert. In der Beschreibung steht: "Img: memory for the image (header and image data)prepared by the called application".
Aber wie kann ich nur den Speicher übergeben?

Ein Array ist ein Speicher! void * wird meist verwendet wenn der Datentyp variabel ist oder komplex, also ein Header und anderen Daten folgen. Ob da immer 16 Bit pro Pixel sind ist noch fraglich, das hängt von der Hardware ab. Bei manchen Grabber Karten hängt das ganz einfach vom Bildformat ab das man im Treiber zuvor konfiguriert hat. Das kann also durchaus einmal ein Byte sein, ein anderes mal ein 16 bit Wort und manchmal auch ein 4 byte Float. Auch erlauben viele Framegrabber um das Bildformat einzustellen, so dass die Anzahl Pixel ebenfalls variabel sein kann.

Wenn Du denn sicher bist dass es ein 16 bit/Pixel Fromat ist, und es immer genau 320 * 240 Pixel sind, dann musst Du also ein Byte Array mit 155328 Elementen initialisieren und and den DLL Parameter übergeben. Danach kommt der interessante Teil, und das ist die Daten aus dem Byte-Array herauszuklauben. Man muss dann die ersten 1728 Bytes als Header herauskopieren und in der von der Library beschriebenen Weise interpretieren und dann die restlichen Bytes in eine 2 dimensionales 16 bit Array umwandlen. Grundsätzlich nicht sehr kompliziert aber bevor das alles gut funktioniert wirst Du noch viele Versuche machen müssen. Viel Vergnügen dabei!! Big Grin

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Nachrichten in diesem Thema
RE: DLL einbinden mit "void * func" - rolfk - 14.10.2011 17:00

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Dll erstellen - void* als Funktion-Ausgabewert Wujaszek 2 7.281 15.05.2014 10:17
Letzter Beitrag: rolfk

Gehe zu: