Mac uygulamamı harika libancillary kitaplığına bağlamaya çalışıyorum. Bununla birlikte, paylaşılan bir kitaplık oluşturmak için kitaplık oluşturma komut dosyasını değiştirdim. Ben nm libancillary.dylib
kullanarak bu kütüphanede sembollerini inceleyebilirsiniz - sonucudur: Ancakld eksik sembolleri bildiriyor, ancak simgeler var görünüyor
libancillary.dylib(single module):
U ___sF
U __keymgr_get_and_lock_processwide_ptr
U __keymgr_get_and_lock_processwide_ptr_2
U __keymgr_set_and_unlock_processwide_ptr
U _abort
00002cfe T _ancil_recv_fd
00002c87 T _ancil_recv_fds
00002b6a T _ancil_recv_fds_with_buffer
00002e9e T _ancil_send_fd
00002e27 T _ancil_send_fds
00002d3f T _ancil_send_fds_with_buffer
U _calloc
U _dlopen
U _dlsym
U _fflush
U _fprintf
U _free
U _malloc
U _recvmsg
U _sendmsg
, ben denemek ve benim uygulama bağlantı, ben olsun çıkışı:
g++ -headerpad_max_install_names -framework AppKit -framework Cocoa -framework IOKit -framework CoreFoundation -framework Carbon -framework OpenGL -framework SystemConfiguration -framework Security -Wl,-bind_at_load -arch i386 -o MyApp build/app.o build/client.o build/util.o -F/Library/Frameworks -L/Library/Frameworks -L../ancillary -lancillary
Undefined symbols:
"ancil_recv_fd(int, int*)", referenced from:
CIPCUnixUtils::readFD(int, int&) constin utils.o
"ancil_send_fd(int, int)", referenced from:
CIPCUnixUtils::writeFD(int, int) constin utils.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [ABClient] Error 1
(Bu düzenledikten nesne dosyalarının çok uzun listesini kaldırmak için hafifçe).
Bu bağlantıda sorun ne olabilir? Sembol var ve herkese açık ve kütüphaneyi veya diğer hata mesajlarını bulamamayla ilgili bir hata yok.
Benzer soru: http://stackoverflow.com/questions/942754/nm-reports-symbol-is-defined-but-ldd-reports-symbol-is-undefined benim sembol gösterildiğini hariç kamu olarak. – Thomi
Dinamik olarak bağlantılı sembolleri görmek için nm -D'yi kullanmanız gerekmiyor mu, yoksa Linux ile karşılaştırıldığında osx'te farklı mı çalışıyor? –