Cython'a sarmayı/dönüştürmeyi denediğim bir C++ programı var. Bazı sebeplerden dolayı ithal etmek için bir çalışma modülüne neden olmayacak belirli bir kütüphaneyi kullanır. Bu arada, çalışan bir C++ programı var. Burada sorunlara neden olduğu görünen libnmf'den bahsetmeliyim. libnmf ilk inşa bu hatayı oluşturmak için bu senaryoyu neden olur: Ben -fpic ile libnmf yeniden açtığınızdaCython yapı tanımsız sembolü ile sonuçlanıyor
/usr/bin/ld: ../build/Linux/bin.release/libnmf.a(nmf.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
../build/Linux/bin.release/libnmf.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
, kurulum bir libnmfpy.so üretir, ama başka bir komut olduğunu içe zaman, ben yukarıda belirtilen alacağı tanımsız sembol:
nm libnmfpy.so | grep _ZN4elem6lapack3SVDEiiPdiS1_
U _ZN4elem6lapack3SVDEiiPdiS1_
nm ../build/Linux/bin.release/libnmf.a | grep _ZN4elem6lapack3SVDEiiPdiS1_
U _ZN4elem6lapack3SVDEiiPdiS1_
ben hatanın nedeni sanırım budur hangisi:
Traceback (most recent call last):
File "test.py", line 1, in <module>
import libnmfpy
ImportError: $path/cython/libnmfpy.so: undefined symbol: _ZN4elem6lapack3SVDEiiPdiS1_
yardımcı olacağını, burada benim arama önerdi şey.
nm $another_path/lib/libelemental.a | grep _ZN4elem6lapack3SVDEiiPdiS1_
0000000000005290 T _ZN4elem6lapack3SVDEiiPdiS1_
Henüz kütüphaneler ve bağlayıcılar çok aşina değilim, bu yüzden herhangi bir yardım mutluluk duyacağız: ben ne düşünüyorum üzerine inşa edilmiştir libnmf kusurlu kütüphanesidir bakın. Thanks:
düzenleme: küçük bir kazma beni bir şey fark etmemi sağladı. Dikkat etmem gereken Mac OS X ve Linux arasında bir fark var mı? Bunun için çalışan insanların bu aslen gibi bir derleme hataları rapor yazmış bu
Sorununuzu çözdünüz mü? MacOSX/Linux arasındaki fark hakkında, 10.9'dan beri OSX derleyicisi 'libcdC++' yerine 'libC++' 'yerine,' 'http://support.enthought.com/entries/26184115-GCC-Clang-and- Cython-in-OS-X-10-9-Mavericks). Üzerinde çalıştığım bir proje üzerinde C++ kodunu bir kütüphaneye ve diğerine cython koduna bağlamayı düşünüyordum. Bu benzer tanımsız bir sembol hatasıyla sonuçlandı. – gg349