我尝试在我的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是否以某种方式缓存库,我是否可以覆盖它以链接库的更改版本?
1条答案
按热度按时间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
,明确地告诉链接器要链接哪个库。