bsp2 / VeeSeeVSTRack

Open-source virtual modular synthesizer
http://vcvrack.com/
BSD 3-Clause "New" or "Revised" License
259 stars 29 forks source link

Help needed with building plugins #24

Closed catronomix closed 5 years ago

catronomix commented 5 years ago

I read the readme but I cant figure out how to build for windows. it says to download the vs ide and the veeseevst sdk but not how to create the needed folder structure/how to point it to the plugin source. And is there a way to compile it with mingw?

bsp2 commented 5 years ago

You have to use msvc / VS, mingw won't work.

The way you set up the plugin's source folder structure is up to you.

Have you managed to build and run the example plugin ("Template_shared") that comes with the plugin SDK ? (EDIT: make sure to select the "Release" configuration !)

To install a plugin to the "vst2_bin/" dir you have to create a folder in "vst2_bin/plugins/" that is named after the plugin's SLUG, e.g. "vst2_bin/plugins/myplugin/".

Place the plugin.dll in that folder, duplicate it and rename the copies to "plugin.dll.fx" and "plugin.dll.instr".

Usually there's also a "res/" subfolder that contains fonts and SVG files but this depends on the plugin.

EDIT#2: You may also want to read this mini-HOWTO.

catronomix commented 5 years ago

I have yet to try it, but I dont have visual studio, only vs code and gcc compiler in mingw, so I wanted to check first if that was an option. I'll see if I can get my hands on vs for free when I'm back at my computer

catronomix commented 5 years ago

Okay I found visual studio community edition and opened the solution, but when I try to build it I get the following error:

1>------ Rebuild All started: Project: Template_shared, Configuration: Debug x64 ------
1>MyModule.cpp
1>Template.cpp
1>C:\vcvdev\VisualStudio\VeeSeeVSTRack_SDK\example\Template_shared\src\MyModule.cpp(91,1): error C1010:  unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
1>Generating Code...
1>C:\vcvdev\VisualStudio\VeeSeeVSTRack_SDK\example\Template_shared\src\Template.cpp(19,1): error C1010:  unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
1>Done building project "Template_shared.vcxproj" -- FAILED.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

Judging from the red underlines everywhere, my guess is that vs doesnt know where to look for the sdk and I have no clue where to specify this in the code. sorry to ask so much questions, I'm not experienced in developing, only recently got used to makefiles and this is the first time trying to compile something without one ^^;

bsp2 commented 5 years ago

That's why I wrote that you must select the Release configuration (you're currently trying to build "Debug x64"): Untitled

catronomix commented 5 years ago

oooh I see I got it, it builds now. I was looking for some config file for this xD

catronomix commented 5 years ago

Okay I edited my code and it builds, then it didn't show up in the VST (I updated to latest version). Then I was like aaaaaaah I have a 32bit Ableton (for compatibility with older vst's) but the plugin was built for x64. But when I change the release target to x86, I get the following build error: 1>LINK : fatal error LNK1181: cannot open input file 'glfw.lib' 😞

bsp2 commented 5 years ago

That's a bug in the project file. Exchange glfw.lib for Rack_shared.lib and set the runtime library to Multithreaded. Or use the new project file attached to this message ;) Template_shared.zip

catronomix commented 5 years ago

Yes got everything working! Source and Win binaries available at https://github.com/catronomix/CMVeeSee/releases :) This issue may be closed, and many thanks for the assistance!

bsp2 commented 5 years ago

Nice ! Guess this is the first (publically available) "3rd" party plugin for VSVR :D I'll add your modules to the next release (as a plugin.dll so you will be able to update them).

bsp2 commented 5 years ago

Regarding this:

#if defined(USE_VST2) && !defined(RACK_PLUGIN_SHARED)
#define plugin "$(CatroModulo)"
#endif // USE_VST2

It should read

#define plugin "CatroModulo"

but then again the string only matters when the plugin is linked statically. In DLL builds, "plugin" is a regular Plugin* and the #define is skipped.

bsp2 commented 5 years ago

https://github.com/bsp2/VeeSeeVSTRack/tree/v0.6/plugins/community/repos/CatroModulo :-)

catronomix commented 5 years ago

Allright! 👍