Hi list.<br><br>A friend of mine and myself, have been exploring expanding a (currently, 32bit only) winelib app to support 64bit plugins in wine (64). The app is called FSThost, which is used to host win32 VST instruments and effects (.dll) as a standalone app in Gnu/linux. Webpage: <a href="http://sourceforge.net/projects/fsthost/">http://sourceforge.net/projects/fsthost/</a><br>
<br>We currently have a example/test app in the source code, which compile as test64.exe / <a href="http://test.exe.so">test.exe.so</a> ... you then use the exeutable 'foo'.   ~ in this case 'foo' could be /path/to/your/64bitVSTplugin. Currently, the code fails to load the 64bit dll. We are not sure exactly why it is failing, but suspect a couple of reasons. this is where we at at;<br>
<br>1) LoadLibrary - OK<br>
2) GetProcAddress (get address of VSTPluginMain function from DLL library) - OK<br>
3) Initialize plugin - i.e. call VSTPluginMain function from library - FAIL.<br>
<br>
Potential reasons:<br>
- Vestige mismatch  <br>
- Wine GetProcAddress on 64 bit platform<br><br>My friend thought someone more familiar with Wine / WinAPI could take a look on this 64bit DLL and at least confirm that address returned by GetProcAddress is correct. (or give us good tips and/or adive). Since, i am already subbed (to wine-devel), i thought i would see if any one was interested in having a look and/or giving us some pointers, tips, etc.<br>
<br>Here's an example (with WINEDEBUG="+relay'), full ouput: <a href="http://pastebin.com/5b5srr2a">http://pastebin.com/5b5srr2a</a><br><br>A little snippet:<br>0042:Call ntdll.RtlEncodePointer(002c4620) ret=18002d9aa<br>
0042:Ret  ntdll.RtlEncodePointer() retval=c90b263e5a54eb02 ret=18002d9aa<br>0042:Ret  PE DLL (proc=0x18002f27c,module=0x180000000 L"Automaton.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1<br>0042:Ret  KERNEL32.LoadLibraryA() retval=180000000 ret=7f77bb394167<br>
0042:Call KERNEL32.GetProcAddress(180000000,7f77bb3950b0 "VSTPluginMain") ret=7f77bb394182<br>0042:Ret  KERNEL32.GetProcAddress() retval=180012900 ret=7f77bb394182<br>Revive plugin: Automaton<br>0042:Call KERNEL32.UnhandledExceptionFilter(0023e7f0) ret=7f77bbf1fc1a<br>
wine: Unhandled page fault on read access to 0x0000022f at address 0x22f (thread 0042), starting debugger...<br>fixme:dbghelp:elf_search_auxv can't find symbol in module<br>fixme:dbghelp:elf_search_auxv can't find symbol in module<br>
fixme:dbghelp:elf_search_auxv can't find symbol in module<br><br>(goto pastebin for the rest / just scroll to bottom of page)<br><br>If you want to take a look and/or test the code yourself (you need latest code): svn checkout svn://<a href="http://svn.code.sf.net/p/fsthost/code/trunk">svn.code.sf.net/p/fsthost/code/trunk</a> fsthost-code<br>
<br>the source tree is small (like 2 seconds to download). Makefile64 is used to compile the test app (test.c). (just use 'make -f makefile64' from /src dir).  alternatively, on sourceforge you can view the test64 app / source code online / here; <a href="http://sourceforge.net/p/fsthost/code/154/">http://sourceforge.net/p/fsthost/code/154/</a><br>
<br>(there are several commits following this one, but i believe this one is the most relevant. <br><br>then to run it (from source dircetory); './test64.exe /path/to/64bitVSTplugin<br><br>You can get a 'tester' 64bit VST (.dll) to load into test64.exe from here: <a href="http://kunz.corrupt.ch/products/tal-elek7ro">http://kunz.corrupt.ch/products/tal-elek7ro</a><br>
<br>anyway, any of your insights, help, tips, comments, etc would be both appreciated and helpful. <br><br>thanks.<br><br>Jordan<br>