我要編譯PJSIP
編譯器CPP
。因爲我正在將API與PJSIP
集成。它在CPP
。所以我必須使用g++
而不是gcc
。但是現在我沒有集成任何其他API。如何解決C++編譯器中的鏈接器錯誤
但我在CPP
編譯器中收到鏈接器錯誤。如果它是C
編譯器,它工作正常。
錯誤:
Undefined symbols for architecture arm: "_crypto_alloc", referenced from: srtp_stream_clone(srtp_stream_ctx_t const*, unsigned int, srtp_stream_ctx_t**)in libsrtp-arm-apple-darwin9.a(srtp.o) srtp_stream_alloc(srtp_stream_ctx_t**, srtp_policy_t const*) in libsrtp-arm-apple-darwin9.a(srtp.o) _srtp_create in libsrtp-arm-apple-darwin9.a(srtp.o) "_aes_icm_context_init", referenced from: srtp_kdf_init(srtp_kdf_t*, unsigned char const*)in libsrtp-arm-apple-darwin9.a(srtp.o) "_crypto_kernel_load_debug_module", referenced from: _srtp_init in libsrtp-arm-apple-darwin9.a(srtp.o) "_rdbx_init", referenced from: srtp_stream_init(srtp_stream_ctx_t*, srtp_policy_t const*) in libsrtp-arm-apple-darwin9.a(srtp.o) srtp_stream_clone(srtp_stream_ctx_t const*, unsigned int, srtp_stream_ctx_t**)in libsrtp-arm-apple-darwin9.a(srtp.o) "_key_limit_clone", referenced from: srtp_stream_clone(srtp_stream_ctx_t const*, unsigned int, srtp_stream_ctx_t**)in libsrtp-arm-apple-darwin9.a(srtp.o) "_auth_get_tag_length", referenced from: _srtp_unprotect_rtcp in libsrtp-arm-apple-darwin9.a(srtp.o) _srtp_protect_rtcp in libsrtp-arm-apple-darwin9.a(srtp.o) _srtp_unprotect in libsrtp-arm-apple-darwin9.a(srtp.o) _srtp_protect in libsrtp-arm-apple-darwin9.a(srtp.o) ... ...
其實我沒有makefile
改變任何東西。
注: 在srtp.c
文件中,已經包含alloc.h
文件。我讚揚它並編譯它。我只有相同的鏈接器錯誤。我以兩種方式思考。但我不確定這一點。
1.它不鏈接.o
文件
2.它沒有取頭文件。 (我不清楚這個。)
請幫我解決這個問題。
順便說一下,'CPP'意味着C預處理器。 'C++'表示C + plus。 –
你是否清楚「編譯」和「鏈接」之間的區別,並且C++不能編譯C和C不能編譯C++,但是如果一個鏈接器在單獨調用和之後調用,C++可以導出到C? –
我們可以用C編譯器編譯C++編譯器和C++代碼。但事情是;如果您在C++代碼中使用命名空間等,則無法使用C編譯器編譯C++代碼。 – jfalexvijay