|
I wrote a c++ plugin, that does some stuff with fmod. The plugin itself seems to work just fine, and I can use it in a Windows standalone build when i copy the fmodex.dll next to the executable. However if I run the game in the editor I always get a DllNotFoundException. My understanding of dll's on windows is, that windows will look up the dll in the system32 folder (XP), then in the application folder and the current working directory. So I printed out the current working directory, which - no surprise - is the projects root folder. However, copying the fmodex.dll to that folder doesn't get rid of the Exception. I have another project where I did something very similar (only with another dll) and this works. So any ideas what could go wrong here?
(comments are locked)
|
|
I think I finally have a clue what's going on. Since Unity2.6 switched to use fmod as audio core (which is a great idea!) there is a "fmodex.dll" in the edior application directory. Since my plugin was probably built using a different version of the fmodex lib it seems to find the one in the app directory and tries to load that. But since they are different versions the loader is not satisfied and I get the DllNotFoundException. At least that's what I think is going on.
(comments are locked)
|
|
At least on the Mac, you are supposed to create a folder titled 'Plugins' inside the project view (assets directory). All plugin DLLs are to reside within that folder. Try the same thing on windows. and an excerpt: Once you have built your bundle you have to copy it to Assets->Plugins folder. Unity will then find it by its name when you define a function like this:
Please note that PluginName should not include the extension of the filename. Be aware that whenever you change code in the Plugin you will have to recompile scripts in your project or else the plugin will not have the latest compiled code. I did that. The problem is not that it simply not finds the plugin dll, but rather it does find it and then tries to find the fmodex.dll it depends on. I've put the dll in the project root, assets and assets/plugins folder just to be sure, but it just doesn't find it. The strange thing is, that when I build the project and start it standalone it DOES find the fmodex.dll which is right next to the executable...
Jan 17 '10 at 04:12 PM
StephanK
I understand now. Unfortunately I don't have an answer, I haven't tried interdependent plugins.
Jan 17 '10 at 09:39 PM
Brian Kehrer
Normally this works as long as the dependencies live in the projects root folder. I think my problem is a bit more obscure as fmodex.dll seems to somehow depend on the dreaded dwmapi.dll and I'm on XP. Only thing I really don't get is why it's working in a standalone build, as the dll search paths should be the same for both.
Jan 18 '10 at 12:44 PM
StephanK
(comments are locked)
|
|
I got the same problem here when trying to load FModEx.dll + FMod_Event.dll in the Editor (build works fine). The conclusion I got was that unity editor's FModEx.dll (the one unity uses since 2.61) is causing "Dll Hell" as the editor process binds it's own dll, we can't load our version. FMod_Event.dll has a dependency on FModEx.dll but it does not reconize unity's version. The result is that you get a "DllNotFoundException" when FMod_Event tries to find FModEx. The solution I found was renaming my version, not unity's, of FModEx.dll to FModE2.dll and changing every occurrence of that name inside both dlls, Ex and Event, with a HexEditor. Now everything works fine. :-D When building for Mac you will probably have to make your wrapper point towards the regular Dylibs. Somehtin like this:
#if MAC
#else
#endif hm, this doesnt work for me. did you change it inside the according libfmod_event.dylib and libfmodex.dll as well?
Apr 19 '10 at 04:46 PM
seventyfive
@marco: Well, that's a good question. I don't recall changing the the dylibs for the Mac build but I'm sure I had to build another Wrapper pointing them instead of the regular DLLs.
Apr 19 '10 at 09:00 PM
JC
ah, that makes sense, I will try that.
May 02 '10 at 10:02 PM
seventyfive
(comments are locked)
|
