Tôi đang cố liên kết ứng dụng mac của mình với thư viện tuyệt vời libancillary. Tuy nhiên, tôi đã thay đổi kịch bản xây dựng thư viện để tạo một thư viện được chia sẻ. Tôi có thể kiểm tra các biểu tượng trong thư viện này sử dụng nm libancillary.dylib
- kết quả là:báo cáo ld thiếu biểu tượng, nhưng các ký hiệu dường như tồn tại
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
Tuy nhiên, khi tôi cố gắng và liên kết ứng dụng của tôi, kết quả tôi nhận được là:
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
(Tôi đã chỉnh sửa này một chút để loại bỏ danh sách các tệp đối tượng rất dài).
Điều gì có thể khiến liên kết này không thành công? Biểu tượng tồn tại và được công khai và không có lỗi về việc không thể tìm thấy thư viện hoặc bất kỳ thông báo lỗi nào khác.
câu hỏi tương tự ở đây: http://stackoverflow.com/questions/942754/nm-reports-symbol-is-defined-but-ldd-reports-symbol-is-undefined Trừ rằng biểu tượng của tôi được hiển thị công khai. – Thomi
Bạn không phải sử dụng nm-D để xem các biểu tượng được liên kết động, hay nó hoạt động khác trên OSX, so với Linux? –