Thread overview | |||||
---|---|---|---|---|---|
|
July 25, 2014 Equivalent of DllMain on OSX? | ||||
---|---|---|---|---|
| ||||
I am presently trying to port a driver I wrote for Windows to OSX. The one thing standing in my way is figuring out how to get the equivalent of DllMain on OSX. I need a place to call Runtime.initialize() and whatnot. Reading the wiki, it seemed like `shared static this()` was the appropriate construct to use, and indeed, when I run the test program from: http://dlang.org/dll-linux.html#dso9 I get the desired results: namely, I see that the `shared static this()` in that test program is called the desired point. When I try the same thing in my driver, it is never executed. Are dylibs on OSX not supported still (I saw some very old threads from 2012 stating as much)? Does it matter that I have multiple modules in the driver? Any help would be appreciated. I shall endeavor to get the modified driver code into a state where I can link it as well. |
July 25, 2014 Re: Equivalent of DllMain on OSX? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mark Isaacson | On Friday, 25 July 2014 at 21:23:00 UTC, Mark Isaacson wrote: > I am presently trying to port a driver I wrote for Windows to OSX. The one thing standing in my way is figuring out how to get the equivalent of DllMain on OSX. > > I need a place to call Runtime.initialize() and whatnot. > > Reading the wiki, it seemed like `shared static this()` was the appropriate construct to use, and indeed, when I run the test program from: > http://dlang.org/dll-linux.html#dso9 > > I get the desired results: namely, I see that the `shared static this()` in that test program is called the desired point. > > When I try the same thing in my driver, it is never executed. > > Are dylibs on OSX not supported still (I saw some very old threads from 2012 stating as much)? Does it matter that I have multiple modules in the driver? Any help would be appreciated. > > I shall endeavor to get the modified driver code into a state where I can link it as well. Loading multiple D shared libraries isn't supported on OS X yet, see these warnings in druntime: https://github.com/D-Programming-Language/druntime/blob/master/src/rt/sections_osx.d#L198 If you only have a single D shared library, I think it's possible, you just may have to tweak dmd/druntime or your build process a bit. I think Martin Nowak or Jacob Carlborg can really answer your questions, as Martin wrote a lot of that code and Jacob seems to follow it closely, whereas I don't use OS X but looked at that code when porting to Android. |
July 25, 2014 Re: Equivalent of DllMain on OSX? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Joakim | > > Loading multiple D shared libraries isn't supported on OS X yet, see these warnings in druntime: > > https://github.com/D-Programming-Language/druntime/blob/master/src/rt/sections_osx.d#L198 > > If you only have a single D shared library, I think it's possible, you just may have to tweak dmd/druntime or your build process a bit. > > I think Martin Nowak or Jacob Carlborg can really answer your questions, as Martin wrote a lot of that code and Jacob seems to follow it closely, whereas I don't use OS X but looked at that code when porting to Android. It would only be a single shared library. Finally got the code publicly available: https://github.com/markisaa/presto-odbc/blob/osxCompile/driver/driver.d#L61 It should compile on OSX with a simple `make clean all` Testing would require installing the iODBC driver manager and pressing the 'Add Driver' button, possibly making a new User DSN, and possibly pressing 'Test'. |
Copyright © 1999-2021 by the D Language Foundation