Unable to get a compiled basic VST detected on Ableton Live and/or Bitwig (Windows)
-
- KVRist
- Topic Starter
- 69 posts since 3 Jun, 2011 from Braga, Portugal
Hummm...
I don't know how Visual Studio 11 compiler was installed because I had Visual Studio Express 2013 installed and after uninstall it, there are still references to the Visal Studio 11 compiler.
I don't know how Visual Studio 11 compiler was installed because I had Visual Studio Express 2013 installed and after uninstall it, there are still references to the Visal Studio 11 compiler.
Website http://www.imaginando.pt
-
- KVRist
- Topic Starter
- 69 posts since 3 Jun, 2011 from Braga, Portugal
I was not linking with "delayimp.lib". Now the project compiles and links successfully but still no joy on Live.
Website http://www.imaginando.pt
-
- KVRist
- Topic Starter
- 69 posts since 3 Jun, 2011 from Braga, Portugal
This is what happens now (Visual Studio console output from debugger)
'Ableton Live 9 Standard.exe' (Win32): Loaded 'C:\tmp\build-vst-Desktop_Qt_5_4_1_MSVC2013_OpenGL_32bit-Release\release\audiolab.dll'. Module was built without symbols.
'Ableton Live 9 Standard.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120.dll'. Cannot find or open the PDB file.
'Ableton Live 9 Standard.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp120.dll'. Cannot find or open the PDB file.
First-chance exception at 0x74954598 (KernelBase.dll) in Ableton Live 9 Standard.exe: 0xC06D007E: Module not found (parameters: 0x0018E760).
Unhandled exception at 0x74954598 (KernelBase.dll) in Ableton Live 9 Standard.exe: 0xC06D007E: Module not found (parameters: 0x0018E760).
'Ableton Live 9 Standard.exe' (Win32): Loaded 'C:\tmp\build-vst-Desktop_Qt_5_4_1_MSVC2013_OpenGL_32bit-Release\release\audiolab.dll'. Module was built without symbols.
'Ableton Live 9 Standard.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120.dll'. Cannot find or open the PDB file.
'Ableton Live 9 Standard.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp120.dll'. Cannot find or open the PDB file.
First-chance exception at 0x74954598 (KernelBase.dll) in Ableton Live 9 Standard.exe: 0xC06D007E: Module not found (parameters: 0x0018E760).
Unhandled exception at 0x74954598 (KernelBase.dll) in Ableton Live 9 Standard.exe: 0xC06D007E: Module not found (parameters: 0x0018E760).
Website http://www.imaginando.pt
-
- KVRian
- 573 posts since 1 Jan, 2013 from Denmark
Yes.. Well at least you know what the problem is now (or what this current problem is, there is sure to be others following ).
I'm afraid i can't help you more currently, you will have to debug the missing dependencies yourself (which is something i don't have a lot of experience with).
Also, another thing: You might want to build debug versions of your build instead, so it actually carries symbol information, diagnostic messages etc. etc.
I'm afraid i can't help you more currently, you will have to debug the missing dependencies yourself (which is something i don't have a lot of experience with).
Also, another thing: You might want to build debug versions of your build instead, so it actually carries symbol information, diagnostic messages etc. etc.
-
- KVRist
- Topic Starter
- 69 posts since 3 Jun, 2011 from Braga, Portugal
Yes. I understand. I will post the solution when I have one!
Thanks for all the help so far.
Regards
Thanks for all the help so far.
Regards
Website http://www.imaginando.pt
-
- KVRist
- Topic Starter
- 69 posts since 3 Jun, 2011 from Braga, Portugal
I have discovered something. If I place the necessary libs along Ableton Live executable, the plugin loads. The delay load technic is not working.
Website http://www.imaginando.pt
-
- KVRian
- 573 posts since 1 Jan, 2013 from Denmark
Yes, as I said, the problem is when Ableton loads your vst, the current working directory (where windows searches for dependencies) is Ableton's, not your dll's folder - which is why the loading fails.
The point is to delay Windows in searching for the other DLL's until you can specify another search path. If your call (SetDLLDirectory) happens after any of your dependencies are referenced, it won't matter; an exception will occur if the DLL cannot be found at that point in time, and your DLL will be unloaded (i think?). Perhaps place the call in some static global initialization? I think another way to do this would be through managing manifests and dependencies, however I never learned how to.
Maybe ask this question on StackOverflow, I'm sure you're not the first to have this problem.
The point is to delay Windows in searching for the other DLL's until you can specify another search path. If your call (SetDLLDirectory) happens after any of your dependencies are referenced, it won't matter; an exception will occur if the DLL cannot be found at that point in time, and your DLL will be unloaded (i think?). Perhaps place the call in some static global initialization? I think another way to do this would be through managing manifests and dependencies, however I never learned how to.
Maybe ask this question on StackOverflow, I'm sure you're not the first to have this problem.
-
- KVRist
- Topic Starter
- 69 posts since 3 Jun, 2011 from Braga, Portugal
Yes, that's definitely the problem. I can't however explain why that doesn't work with something linked with Qt5Core.
I will investigate for some alternatives. Your help was crucial.
I will also post my solution here.
Thanks very much,
Regards
I will investigate for some alternatives. Your help was crucial.
I will also post my solution here.
Thanks very much,
Regards
Website http://www.imaginando.pt
-
- KVRian
- 1379 posts since 26 Apr, 2004 from UK
The best course of action is to add your dependencies as static libraries. I had some plugins with shared libraries, but it is not really great, especially if other plugins also have similar dependencies, they may end up share their libraries, mixing their behavior, and it can be pretty nasty. With static linking, all the dependencies are in the library, so the calls to the third party libraries will stay inside the plugin, without interaction with the outside world/DAW, limiting the risks of dependency hell.
-
- KVRian
- 1379 posts since 26 Apr, 2004 from UK
It's a little faster for application that are compiled for static linkage, which is not the case here (relocatable code). The only benefit is a somewhat faster first loading time.
The big advantage of dynamic linking is upgrading libraries without having to provide the whole package.
The big advantage of dynamic linking is upgrading libraries without having to provide the whole package.