[英]Where program entry point is defined when building and runing C+/Juce project in Xcode?
[英]Changes to linked library code not showing up when Juce program is built in Xcode
我正在嘗試在我的 Juce 音頻插件中包含一個庫 (LAME),但希望能夠對庫代碼進行一些更改。 但是,當我對 LAME 庫源代碼進行更改並make
修改時,當我在 Xcode 中構建我的插件時,這些更改並沒有反映出來!
在 Projucer 設置中,我在“Header Search Paths”中包含了我本地 LAME 副本的路徑。 在 projucer 的 Xcode 導出器部分,我在 Extra Compiler Flags 中包含了-I<path to my local copy of lame>/include
,Extra Linker 中-L<path to my local copy of lame>/libmp3lame/.libs
/libmp3lame/.libs Flags 和 External Libraries 中的mp3lame
鏈接。 LAME 有一個 makefile,當我為我的 LAME 本地副本運行make
時,它會構建庫,Xcode 能夠找到它們,並且我的插件可以正確構建和運行。 當我為 LAME makefile 運行make clean
時,它刪除了庫,並且我的插件沒有構建,錯誤庫沒有找到-lmp3lame
,正如預期的那樣。
然而,當我運行我的插件時,我對 LAME 庫源代碼所做的更改並沒有反映出來。 例如,我的插件從 LAME 調用 function lame_encode_buffer_interleaved_ieee_float()
。 我將 function 的主體更改為簡單的printf("in encode function\n");return 0;
,運行make
,然后構建我的插件。 function 像以前一樣運行,返回非零值並且不打印任何內容。 我的更改沒有效果。
我該如何解決這個問題,以便在構建插件時顯示我對 LAME 所做的更改? Xcode 是否以某種方式緩存庫,我可以覆蓋它以使其鏈接庫的更改版本嗎?
問題原來是,雖然我認為我正在鏈接 LAME 的本地副本,但我實際上是在鏈接/usr/local/lib/
中的 lame 庫。 當我運行make clean
時它沒有構建的原因是因為 clean 命令刪除了我使用-I
標志包含的 header 文件。 為了解決這個問題,我將-L<path to my local copy of lame>/libmp3lame/.libs
了<path to my local copy of lame>/libmp3lame/.libs/libmp3lame.a
,並從外部庫中刪除mp3lame
到鏈接,明確告訴 linker 要鏈接哪個庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.