在Xcode中构建Juce程序时,对链接库代码的更改不显示

llycmphe  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(129)

我尝试在我的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 Flags中包含了-L<path to my local copy of lame>/libmp3lame/.libs,在External Libraries中包含了mp3lame以进行链接。LAME有一个makefile,当我为LAME本地副本运行make时,它会构建库。Xcode能够找到它们,我的插件可以正确构建和运行。当我运行LAME makefile的make clean时,它删除了这些库,我的插件不能构建,错误库没有找到-lmp3lame,正如预期的那样。
然而,我对LAME库源代码所做的更改在我运行插件时并没有反映出来。例如,我的插件从LAME调用函数lame_encode_buffer_interleaved_ieee_float()。我将该函数的主体更改为简单的printf("in encode function\n");return 0;,运行make,然后构建我的插件。函数像以前一样运行,返回非零值,不打印任何内容。我的更改没有任何效果。
如何修复这个问题,以便在构建插件时显示对LAME所做的更改?Xcode是否以某种方式缓存库,我是否可以覆盖它以链接库的更改版本?

hgncfbus

hgncfbus1#

问题是,当我以为我链接的是LAME的本地副本时,实际上链接的是/usr/local/lib/中的蹩脚库。当我运行make clean时,它没有生成的原因是clean命令删除了我包含的带有-I标志的头文件。为了解决这个问题,我用<path to my local copy of lame>/libmp3lame/.libs/libmp3lame.a替换了-L<path to my local copy of lame>/libmp3lame/.libs。并且从要链接的外部库中删除了mp3lame,明确地告诉链接器要链接哪个库。

相关问题