Aktywne Wpisy

Fizyk_Dawid_Pasieka +181
#gospodarka #polska #uniaeuropejska
Polska podwoiła PKB na mieszkańca od czasu dołączenia do UE, zbliżając się do średniej europejskiej.
Polska podwoiła PKB na mieszkańca od czasu dołączenia do UE, zbliżając się do średniej europejskiej.
źródło: 1000044173
Pobierz
Pytanie rynkowe: za ile byście wystawili taki zestaw na sprzedaż? Switch jest 1. generacji.
#nintendoswitch #switch #nintendo
#nintendoswitch #switch #nintendo
źródło: Zdjęcie z biblioteki
Pobierz




Czy ktoś z Was korzystał z pythonowej biblioteki ctypes?
Gdy pod linuksem wykonuje polecenia:
g++ -c -fPIC test.cpp -o test.o
g++ -shared -Wl,-soname,libfoo.so -o libfoo.so test.o
Wszystko śmiga. Funkcja zwraca wartość do pythona tak jak powinna. Jednak dzieje się tak tylko pod linuxem. Pod windowsem gdy chcę wyprintować wartość zwróconą przez funkcję otrzymuję nan.
Windows:
2.5
2.93251
nan
Linux:
2.5
2.93251
2.93251
Domyślam się, że problem leży w interpretacji danych zwróconych z cpp do pythona. Stwierdziłem, że może windows potrzebuje dllki zamiast so, ale w tym przypadku jest jeszcze gorzej.
D:\cpp>python test.py
Traceback (most recent call last):
File "test.py", line 19, in
f = Foo()
File "test.py", line 12, in _init
self.obj = lib.Foonew()
File "C:\Python27\lib\ctypes_init.py", line 375, in getattr
func = self.getitem(name)
File "C:\Python27\lib\ctypes_init_.py", line 380, in getitem
func = self.FuncPtr((nameorordinal, self))
AttributeError: function 'Foo_new' not found
Program w pythonie (z loadem so):
https://pastebin.com/ZhkZf9d3
Program w pythonie (z dll):
https://pastebin.com/025J7Kat
Program w cpp:
https://pastebin.com/K7RSRNnD
Czy mógłbym liczyć na jakieś porady, albo wskazanie tutoriala, który przerabialiście i takie myki działały? Przyznam, że z cpp jestem zielony i jeśli porady miałyby być jakieś mega pro to prosiłbym jednak o wytłumaczenie jak krowie na rowie ;)
A tak poza tym to lepiej używać CFFI dla pythona niż ctypes.
@filozof900: windows na windowsie, ale pod MinGW
@lionbest: a CFFI nie znam, zapoznam się. Pythona mam standardowego, a biblioteka faktycznie MinGW.
A no to tak z buta to nie zadziała, ABI MinGW i MSVC różnią się i trzeba się jakoś bawić atrybutami, żeby to zadziałało. Ja w to nie wnikałem, więc dużo nie pomogę.
Niby clang++ stara się być kompatybilny z MSVC, ale tak czy siak musisz go zainstalować żeby clang miał skąd brać biblioteki.