簡體   English   中英

在 Xcode 中構建 Juce 程序時未顯示鏈接庫代碼的更改

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM