LabVIEWForum.de
c-dll,strcpy und fehler 1097 - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: c-dll,strcpy und fehler 1097 (/Thread-c-dll-strcpy-und-fehler-1097)



c-dll,strcpy und fehler 1097 - Digitabulum - 17.01.2011 13:10

Hallo zusammen,

ich beschäftige mich zur Zeit in meiner Bachelorarbeit mit der Ansteuerung eines Detektors und habe nun schon ein wenig Erfahrung mit C und Labview sammeln können. Auch die Einbindung ist mir schon geglückt, aber hier ein wenig zu den Einzelheiten:

Ich besitzte die DLL sowie einen Beispiel C-Code des Systems, woraus ich eine zusätzliche Wrapper DLL gebaut habe, um nicht jeden einzelne Funktion aufrufen zu müssen. Das Beispielprogramm hat zusätzlich noch Callbackfuntionen, die ich auch schon in die Wrapper DLL erfolgreich eingebunden habe.
Die Bildgebung funktioniert dabei folgendermaßen: Es wird ein Offset_Bild gemacht. Die Daten werden in einen Buffer geschrieben auf den ein Zeiger weißt. Vorher findet eine Speicherresevierung mit einem malloc Befehl statt. Im weiteren Verlauf wird dann ein normales, korrigiertes Bild gemacht, wobei mit einem Pointer auf den Buffer gezeigt wird. Das ganze funktioniert auch einwandfrei.

Zum Abschluss soll dann das ganze in einem speziellen Dateiformat gespeichert werden. Im C-Code habe ich bereits alle Information für den Header etc fertig, nur bekomme ich dabei einen Fehler 1097. Also irgendwo herrschen Speicherkollisionen.
Um herauszufinden wo die Speicherkollision liegt, habe ich viele Teile auskommentiert, einfach getestet und bin bei dem Befehl hängen geblieben:

strcpy(szFileName, "Offset.his");
pFile = fopen(szFileName, "wb");
if (pFile)
{
//Headerinfos, zeiger auf buffer etc
}

Ich würde auch gerne mehr von dem Quellcode zur verfügung stellen, aber ich weiß nicht wie viel ich davon öffentlich machen kann und möchte deshalb kein Risiko eingehen.

Meine frage ist nun:
Wie kann ich diese Speicherkollision umgehen?
Oder kann ich unter Labview eine Datei mit gewünschten Headerinformationen wegspeichern, wenn ich als Input die Buffer mit angebe?


Vorweg schon einmal vielen Dank für das Lesen meines Probelems.
Ich hoffe ihr könnte mir dabei helfen.

Viele Grüße
Digitabulum


c-dll,strcpy und fehler 1097 - rolfk - 17.01.2011 20:15

' schrieb:strcpy(szFileName, "Offset.his");
pFile = fopen(szFileName, "wb");
if (pFile)
{
//Headerinfos, zeiger auf buffer etc
}

Wie wird denn szFileName in Deinem Code deklariert? Ich tippe mal auf sowas:

char *szFileName;

Das alloziert keinen Buffer in den strcpy() etwas reinkopieren kann sondern halt nur einen Pointer ins Nirwana.

Da müsste schon soetwas stehen wie:

char szFileName[MAX_PATH];

Wenns nicht das ist, dann tut es mir leid. Ohne wesentlich mehr Informationen (ja auch Teile des Sourcecodes) wird's nicht möglich sein weiterzuhelfen.


c-dll,strcpy und fehler 1097 - Digitabulum - 18.01.2011 08:48

Hallo rolfk,

danke für deine Antwort. Ich hab den Code an der Stelle ein wenig abgeändert und mit diesem Ergebnisse funktioniert es nun:


strcpy(szFileName, "Offset.his"); <- ersatzlos gestrichen

pFile = fopen("Offset.his", "wb"); <- und das dafür genommen


Manchmal ist eben weniger mehr ^_^

Nochmal ein dickes Danke

Digitabulum