Çalışamayacağım çok basit bir test vakam var, C++ ile cytipleri ctip kullanarak kullanmaya çalışıyorum. Çiftler ile çalışırken hatalar alıyorum, bu durumda C++ 'da "cout" kullanmaya çalışıyorum.WindowsError istisnası erişim ihlali - basit python C++ ctypes arabiriminde
hatadır: sorun aşağıdaki c cout hizada
WindowsError: exception: access violation writing 0x.....
++ kod:
#include "testgeo.h"
#include <iostream>
TestGeo::TestGeo() : td_(0),
ti_(0) {
std::cout<<td_<<std::endl; // problem line
}
extern Cı içeren aşağıdaki başlığı (testgeo.h) sahip bölüm:
class TestGeo {
public:
TestGeo();
~TestGeo(){};
private:
double td_;
int ti_;
};
extern "C" {
__declspec(dllexport) TestGeo* TestGeo_new() {
return new TestGeo();
}
}
Ve bu ishal piton kodu (testgeo.py):
import ctypes
lib = ctypes.cdll.LoadLibrary('testgeo.dll')
class TestGeo(object):
lib.TestGeo_new.argtypes = []
lib.TestGeo_new.restype = ctypes.c_void_p
def __init__(self):
self.obj = lib.TestGeo_new()
if __name__ == "__main__":
testGeoObj = TestGeo()
Düzenleme 1: Hala mücadele ediyorum ve programlama için oldukça yeni. Zaten bana bazı ipuçları verebilir bellek hatasını araştırabilir miyim?
Düzenleme 2:
x86_64-w64-mingw32-g++ -c testgeo.cpp -o testgeo.o -std=c++11 -O2 -Wall -Wextra -Weffc++ -pedantic
x86_64-w64-mingw32-g++ -shared -o testgeo.dll testgeo.o
kod çalıştırma::
python testgeo.py
Edit 3: Kod üzerinde çalışır Ben yanlış bir şey olması durumunda derleme am nasıl paylaşmak istedim linux makinem ... bu da benim windows problemimden hala emin olduğum anlamına geliyor. Ancak umarım bu duruma biraz ışık verebilir.
Sizin kodunuz gayet iyi. Burada çalışıyor. –
@DavidHeffernan, kontrol ettiğiniz için teşekkürler. Belki de benim windows makinede çalışır veya derleme ile ilgili bir sorun yaşıyorum – windenergy
Ben 64 bit windows kullanıyorsunuz - [This Q & A] (http://stackoverflow.com/a/17242397/3479753) yardımcı olabilir. – etheranger