www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Exported Class Error

reply Damien Gibson <spiceywolf.archaicsoft outlook.com> writes:
Hi. I find myself comming back here alot which is a little 
discouraging.

This time around, I have a dll im making, right now its 32bit 
using dmd cause i have been getting better information when 
compile errors occur.

if i have a class in it, and i call export on all the functions i 
want exposed and attempt to use this class in an application that 
calls either a static or shared lib it fails to compile giving me 
an error:

  Error 42: Symbol Undefined _D4asfw7network6server6server7__ClassZ
obj\Debug\serverApp.obj(serverApp)
  Error 42: Symbol Undefined 
_D4asfw7network6server6server6__ctorMFkZC4asfw7network6server6server
obj\Debug\serverApp.obj(serverApp)
  Error 42: Symbol Undefined _D4asfw7network6server12__ModuleInfoZ
Error: linker exited with status 3
Exit code 3

I had compiled in LDC2 compiler and this particular error was 
extended a little more to tell me that all 3 of these errors are 
caused on the exact same line where i declare a class object i 
named socket (outside of said function so its global) --

'socket = new Server(my param data);'

My main assumption was much less that the first and third error 
reports meant anything significant in this case but moreso 
because it wasnt finding the constructor which seems to me to 
point at the __ctor one. However when i open the shared library 
with depends.exe the exact 
'_D4asfw7network6server6server6__ctorMFkZC4asfw7network6server6server' exists
in the dll, just without the _ at the beginning so im thinking maybe something
about the .di file is making it think there should be a _ at the beginning and
maybe some way i can modify the di will make it stop adding this because that
function IS there.

Also i am not sure if this is a related issue, but i have another 
dll which the above mentioned problem dll and app cant find some 
structures i made unless i specificly compile it as a static 
library and the structure does happen to be used IN the 
constructor of the server object that keeps failing.

Any help would be appreciated ive been trying to figure out what 
the heck to do with this for about 2 days now and not getting an 
inch further.
Jul 14 2017
parent reply rikki cattermole <rikki cattermole.co.nz> writes:
On 15/07/2017 5:31 AM, Damien Gibson wrote:
 Hi. I find myself comming back here alot which is a little discouraging.
 
 This time around, I have a dll im making, right now its 32bit using dmd 
 cause i have been getting better information when compile errors occur.
 
 if i have a class in it, and i call export on all the functions i want 
 exposed and attempt to use this class in an application that calls 
 either a static or shared lib it fails to compile giving me an error:
 
   Error 42: Symbol Undefined _D4asfw7network6server6server7__ClassZ
 obj\Debug\serverApp.obj(serverApp)
   Error 42: Symbol Undefined 
 _D4asfw7network6server6server6__ctorMFkZC4asfw7network6server6server
 obj\Debug\serverApp.obj(serverApp)
   Error 42: Symbol Undefined _D4asfw7network6server12__ModuleInfoZ
 Error: linker exited with status 3
 Exit code 3
 
 I had compiled in LDC2 compiler and this particular error was extended a 
 little more to tell me that all 3 of these errors are caused on the 
 exact same line where i declare a class object i named socket (outside 
 of said function so its global) --
 
 'socket = new Server(my param data);'
 
 My main assumption was much less that the first and third error reports 
 meant anything significant in this case but moreso because it wasnt 
 finding the constructor which seems to me to point at the __ctor one. 
 However when i open the shared library with depends.exe the exact 
 '_D4asfw7network6server6server6__ctorMFkZC4asfw7network6server6server' 
 exists in the dll, just without the _ at the beginning so im thinking 
 maybe something about the .di file is making it think there should be a 
 _ at the beginning and maybe some way i can modify the di will make it 
 stop adding this because that function IS there.
 
 Also i am not sure if this is a related issue, but i have another dll 
 which the above mentioned problem dll and app cant find some structures 
 i made unless i specificly compile it as a static library and the 
 structure does happen to be used IN the constructor of the server object 
 that keeps failing.
 
 Any help would be appreciated ive been trying to figure out what the 
 heck to do with this for about 2 days now and not getting an inch further.
TypeInfo doesn't cross the dll boundary atm on Windows. Known bug. Which means no classes or exceptions. https://issues.dlang.org/show_bug.cgi?id=4071
Jul 14 2017
parent Damien Gibson <spiceywolf.archaicsoft outlook.com> writes:
 TypeInfo doesn't cross the dll boundary atm on Windows.
 Known bug.

 Which means no classes or exceptions.

 https://issues.dlang.org/show_bug.cgi?id=4071
oh how lovely
Jul 15 2017