Hey guys and gals! Long time lurker here, just sending a thanks to everyone for all the help over the years. I know I have been able to resolve every problem I have ever had with Google and the search function… until now.
So long story short, I’m playing around with ProceduralMeshComponent and I was using LibNoise, then there’s UnrealNoise (a plugin of LibNoise for Unreal) But LibNoise is LGPLv2, which, in my opinion, is evil, and slow.
So I switched to Noise++, its got a BSD licence (actually free and open source with no strings) is multi-threaded by default and has most of the same modules as LibNoise. Too bad Noise++ has been all but abandoned.
HERE is the link to Noise++ source if anyone wants it.
So I got Noise++ to work (even multi threading) in my project, mostly by brute force, I went through every .cpp file and added my header and fixed up some minor things till the compiler stopped complaining.
But if I wanted to add the same library to another project, I would have to go through and do the same thing again! So I decided to just port it over to a Plugin! Unreal doesn’t have a good Noise plugin (that i’m aware of)(that’s not LGPLv2)
so I ran through the plugin creation wizard, and tossed in the library, fixed up some files and said “I’m only going to use this in C++, so its good for now”
I removed all of my forced in files in my project, commented out the one location where it was used, added the plugin, added it to the “PublicDependencyModuleNames”, remade the visual studio project files, just in case, (yes the plugin compiles free of errors on its own, because I made it in its own empty project) included the plugin header, Visual Studio shows no errors so far, I can get the “noisepp” namespace, I can get all the noise modules, no errors at all! Awesome! But BOOM! as soon as you compile, the worst possible compiler error shows up.
Error 2 error LNK2001: unresolved external symbol "public: virtual void __cdecl noisepp::Module::write(class noisepp::utils::OutStream &)const " (?write@Module@noisepp@@UEBAXAEAVOutStream@utils@2@@Z) C:\Users\Trojke\Google Drive\Unreal\Projects\ExoPlanet\Intermediate\ProjectFiles\VoxChunkManager.cpp.obj ExoPlanet
Error 3 error LNK2001: unresolved external symbol "public: virtual void __cdecl noisepp::Module::read(class noisepp::utils::InStream &)" (?read@Module@noisepp@@UEAAXAEAVInStream@utils@2@@Z) C:\Users\Trojke\Google Drive\Unreal\Projects\ExoPlanet\Intermediate\ProjectFiles\VoxChunkManager.cpp.obj ExoPlanet
Error 4 error LNK2001: unresolved external symbol "public: virtual void __cdecl noisepp::RidgedMultiModule::write(class noisepp::utils::OutStream &)const " (?write@RidgedMultiModule@noisepp@@UEBAXAEAVOutStream@utils@2@@Z) C:\Users\Trojke\Google Drive\Unreal\Projects\ExoPlanet\Intermediate\ProjectFiles\VoxChunkManager.cpp.obj ExoPlanet
Error 5 error LNK2001: unresolved external symbol "public: virtual void __cdecl noisepp::RidgedMultiModule::read(class noisepp::utils::InStream &)" (?read@RidgedMultiModule@noisepp@@UEAAXAEAVInStream@utils@2@@Z) C:\Users\Trojke\Google Drive\Unreal\Projects\ExoPlanet\Intermediate\ProjectFiles\VoxChunkManager.cpp.obj ExoPlanet
Error 6 error LNK1120: 4 unresolved externals
I’m not too worried about yall seeing my path to the project on my HD, or the project name, its just fooling around anyway.
A link to the github repo is HERE as I was going to release it to yall eventually.
This happens as soon as you create any of the noise modules. EX: “noisepp::RidgedMultiModule caves;”
It happens in a new project, it happens no matter what, as long as you reference a noise module, and it only happens when you reference a noise module, but the plugin compiles fine on its own, and when you pull the code away from the plugin and “brute force” it into a project, it works just fine.
I have reached the limit of my Google-fu and trying to resolve the LNK2001 error, it’s so stupidly ambiguous that it could be almost anything, and I have gotten it before and been able to fix it. But I need yalls help this time.
Sorry about the rambling, I have tried everything short of re-writing the plugin, which i’m afraid I’ll need to do, as the source has multiple classes in a single header and Unreal wont let you declare multiple UCLASS() like that.