Including external libaries


#1

Hi all,

I’m working a project where i’d like to use the Rubberband timestretching library, but I am having trouble correctly including it the Projucer.

Suppose the main header file (RubberBandStretcher.h) to be included is in:
C:\SomeFolder\SomeJuceProject\Libraries\rubberband-1.8.1\rubberband\

And its source files (such as RubberBandStretcher.cpp) are in:
C:\SomeFolder\SomeJuceProject\Libraries\rubberband-1.8.1\src\

My initial instinct was to include the header path in the Projucer VS2017 exporter’s “Header search paths” and the source files path in “Extra library search paths” for each build target.

Evidently, this is not correct as I am getting the following error at link-time:
Error LNK2019 unresolved external symbol "public: __cdecl RubberBand::RubberBandStretcher::RubberBandStretcher(unsigned __int64,unsigned __int64,int,double,double)" (??0RubberBandStretcher@RubberBand@@QEAA@_K0HNN@Z) referenced in function "public: __cdecl PitchShifter::PitchShifter(struct juce::dsp::ProcessSpec &)" (??0PitchShifter@@QEAA@AEAUProcessSpec@dsp@juce@@@Z) Roth-VHS_VST C:\Users\Rothmann\Documents\PROJECTS\Development\Github\Roth-VHS\Builds\VisualStudio2017\Roth-VHS.lib(PitchShifter.obj)

This looks like I am not correctly locating the definitions in the source .cpp file. The RubberBandStretcher.h file shows up in visual studio under “External Dependencies”.

Does anyone here know or have some pointers for me on fixing this? :slight_smile:


#2

“Extra library search paths” can be used to help the linker find libraries, i.e. collection of already compiled object files. These library files usually end with the extension .a, or .lib.

In your case, you need to compile the source file, by adding it to the sources of your project.


#3

Ah, that makes sense - Thanks McMartin!