Die Situation ist einfach. Ich öffne Datei in einer DLL (DLL1) und schließe sie in einer anderen (DLL2). Ich rufe beide DLLs eine nach der anderen in Python-Skript, wird der Code wie folgt vor:C++ & Python schließen und öffnen Sie Dateien in verschiedenen DLL
from ctypes import *
DLLFP1=r"C:\Workspaces\CPP\Test\build\files1.dll"
DLLFP2=r"C:\Workspaces\CPP\Test\build\files2.dll"
DLL1=cdll.LoadLibrary(DLLFP1)
DLL2=cdll.LoadLibrary(DLLFP2)
cppobj=c_void_p()
DLL1.open(byref(cppobj))
DLL2.close(cppobj)
DLL1 Code:
#define DLLEXPORT extern "C" __declspec(dllexport)
DLLEXPORT void open(ofstream* &f){
f = new ofstream();
string FP("c:\\teest.log");
f->open(FP);
}
und DLL2 Code:
#define DLLEXPORT extern "C" __declspec(dllexport)
DLLEXPORT void close(ofstream* f){
f->close();
}
Im Ergebnis habe ich "Zugriffsverletzung schreiben". Ich kann normalerweise auch Text in Datei von DLL2 schreiben und wenn ich schließen Funktion zu DLL1 funktioniert es gut. Ich benutze Intel Compiler. Betriebssystem ist Windows7.
Die Frage ist, was ist los? Was ist der richtige Weg, um Dateien zwischen DLLs zu teilen?
Vielen Dank im Voraus.
Zugehörige: [Did C++ 11 Adresse betrifft die Übergabe von Std Lib-Objekten zwischen dynamischen/gemeinsamen Bibliothek Grenzen?] (Http://programmers.stackexchange.com/questions/176681/did-c11-address-concerns- passing-std-lib-objects-between-dynamic-shared-librar) – robyschek
Versuchen Sie, die beiden DLLs mit dynamischer C-Laufzeit zu verbinden, mit MS cl.exe ist es '/ MD 'Schalter – robyschek
Ich habe versucht, leider tut es nicht' t helfen. –