How do I interface D to a C library based on a DLL?

Christopher Grantham cgrantham at gmail.com
Wed Jun 13 01:34:01 PDT 2007


torhu wrote:
> Christopher Grantham wrote:
>> Hi,
>>      I'm very new to D, I have worked with other typical languages 
>> previously (C, C++, Java etc) and have some familiarity with .NET 
>> (mainly Visual C++), I need to use a C API in the form of a DLL for my 
>> uni work (research) and would like to try some experiments in D (I 
>> hate VC++ - IJW & M$ interop be damned!), I have the interface (.h), 
>> .LIB and .OBJ files as well as the DLL itself, but I'm not sure how to 
>> go about using/Linking the API in D, I've used it in VS.NET (VC++) but 
>> want to get away from it and use D if possible.
>> The DLL is closed source/proprietary so I can only edit the interface; 
>> I've read the 'Converting C .h files to D Modules' 
>> (http://www.digitalmars.com/d/htomodule.html), 'Writing Win32 DLLs in 
>> D'(http://www.digitalmars.com/d/dll.html), 'Converting C .h Files to D 
>> Modules' (http://www.digitalmars.com/d/htomodule.html), and 
>> 'Interfacing to C' (http://www.digitalmars.com/d/interfaceToC.html), 
>> however it isn't clear from these articles (at least to a n00b like 
>> myself) how I can use this C interfaced DLL in D code.
>> So far I've tried converting the header to D (manually), which hasn't 
>> worked (I get error: 138 data corruption), I think I should be able to 
>> interface directly to the C code, but am not confident.
>> If someone could assist/explain how to get D code working with a C 
>> interface from a DLL, then I'd be most grateful.
> 
> It would be nice to know what you did when you got that error.  But in 
> case you got it when trying to link with a lib file meant for a 
> different linker, I'll explain how to get one that works with dmd.
> 
> Download:
> ftp://ftp.digitalmars.com/bup.zip
> 
> In that zip, you'll find implib.exe.  It creates dmd-compatible import 
> libs, based on DLL files.
> 
> implib /s thelib.lib thedll.dll
> 
> 'thedll.lib' is the output, so move the lib file you've got somewhere 
> else first.  Try linking with that file, if that's what you were doing.
Thanks for that :),
     when I get the error I mentioned, I was attempting to convert the C 
interface (.h) file to a D module like in the article I mentioned, I was 
attempting to build it in Eclipse which gave the following output:
project "/OrcfxAPITest" build started, configuration=default
compiling...
C:\dmd\bin\dmd.exe -c -odbin/default src\test.d src\OrcFxAPI.d 
-IC:\dmd\src\phobos\
linking...
C:\dm\bin\link.exe bin\default\test.obj src\OrcFxGUI.obj 
bin\default\OrcFxAPI.obj 
,bin\OrcfxAPITest.EXE,bin\OrcfxAPITest.map,C:\dmd\lib\ ,,,

OPTLINK (R) for Win32  Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved

src\OrcFxGUI.obj Offset 00000H Record Type 004C
  Error 138: Module or Dictionary corrupt
project "/OrcfxAPITest" build finished

As for your suggestion, I downloaded implib, generated the new .lib file 
without any problems, moved the original out of the way and tried to 
build everything in Eclipse, if I use the '.d' file I created by 
converting the header, and try to import it as a module I get the 
following (warning, its a bit long):
project "/OrcfxAPITest" build started, configuration=default
compiling...
C:\dmd\bin\dmd.exe -c -odbin/default src\test.d src\OrcFxAPI.d 
-IC:\dmd\src\phobos\
linking...
C:\dm\bin\link.exe bin\default\test.obj src\OrcFxApi.obj 
bin\default\OrcFxAPI.obj 
,bin\OrcfxAPITest.EXE,bin\OrcfxAPITest.map,C:\dmd\lib\ ,,,

OPTLINK (R) for Win32  Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved

bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 000DDH Record Type 0091
  Error 1: Previous Definition Different : _stUserDefinedError
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 000EDH Record Type 0091
  Error 1: Previous Definition Different : _otGeneral
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00101H Record Type 0091
  Error 1: Previous Definition Different : _otEnvironment
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00110H Record Type 0091
  Error 1: Previous Definition Different : _otVessel
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0011DH Record Type 0091
  Error 1: Previous Definition Different : _otLine
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0012CH Record Type 0091
  Error 1: Previous Definition Different : _ot6DBuoy
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00141H Record Type 0091
  Error 1: Previous Definition Different : _ot3DBuoy
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0014FH Record Type 0091
  Error 1: Previous Definition Different : _otWinch
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0015CH Record Type 0091
  Error 1: Previous Definition Different : _otLink
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0016AH Record Type 0091
  Error 1: Previous Definition Different : _otShape
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0017CH Record Type 0091
  Error 1: Previous Definition Different : _otDragChain
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0018DH Record Type 0091
  Error 1: Previous Definition Different : _otLineType
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0019FH Record Type 0091
  Error 1: Previous Definition Different : _otClumpType
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 001B6H Record Type 0091
  Error 1: Previous Definition Different : _otWingType
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 001C9H Record Type 0091
  Error 1: Previous Definition Different : _otVesselType
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 001DFH Record Type 0091
  Error 1: Previous Definition Different : _otDragChainType
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 001F5H Record Type 0091
  Error 1: Previous Definition Different : _otFlexJointType
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00207H Record Type 0091
  Error 1: Previous Definition Different : _otFlexJoint
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0021CH Record Type 0091
  Error 1: Previous Definition Different : _otAttachedBuoy
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00237H Record Type 0091
  Error 1: Previous Definition Different : _otBrowserGroup
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0024FH Record Type 0091
  Error 1: Previous Definition Different : _otDragCoefficient
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00266H Record Type 0091
  Error 1: Previous Definition Different : _otAxialStiffness
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0027FH Record Type 0091
  Error 1: Previous Definition Different : _otBendingStiffness
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 002A2H Record Type 0091
  Error 1: Previous Definition Different : _otBendingConnectionStiffness
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 002C0H Record Type 0091
  Error 1: Previous Definition Different : _otWingOrientation
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 002DBH Record Type 0091
  Error 1: Previous Definition Different : _otKinematicViscosity
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 002F4H Record Type 0091
  Error 1: Previous Definition Different : _otFluidTemperature
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00309H Record Type 0091
  Error 1: Previous Definition Different : _otCurrentSpeed
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00322H Record Type 0091
  Error 1: Previous Definition Different : _otCurrentDirection
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00341H Record Type 0091
  Error 1: Previous Definition Different : _otExternalFunction
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00363H Record Type 0091
  Error 1: Previous Definition Different : _otHorizontalVariationFactor
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00375H Record Type 0091
  Error 1: Previous Definition Different : _otLoadForce
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00388H Record Type 0091
  Error 1: Previous Definition Different : _otLoadMoment
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 003A0H Record Type 0091
  Error 1: Previous Definition Different : _otExpansionFactor
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 003BEH Record Type 0091
  Error 1: Previous Definition Different : _otWinchPayoutRate
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 003D3H Record Type 0091
  Error 1: Previous Definition Different : _otWinchTension
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 003F3H Record Type 0091
  Error 1: Previous Definition Different : _otVerticalVariationFactor
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0040EH Record Type 0091
  Error 1: Previous Definition Different : _otTorsionalStiffness
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0042EH Record Type 0091
  Error 1: Previous Definition Different : _otMinimumBendRadius
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00443H Record Type 0091
  Error 1: Previous Definition Different : _vdnWingAzimuth
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0045CH Record Type 0091
  Error 1: Previous Definition Different : _vdnWingDeclination
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0046FH Record Type 0091
  Error 1: Previous Definition Different : _vdnWingGamma
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0048CH Record Type 0091
  Error 1: Previous Definition Different : _vdnGlobalAppliedForceX
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 004AFH Record Type 0091
  Error 1: Previous Definition Different : _vdnGlobalAppliedForceY
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 004CCH Record Type 0091
  Error 1: Previous Definition Different : _vdnGlobalAppliedForceZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 004EAH Record Type 0091
  Error 1: Previous Definition Different : _vdnGlobalAppliedMomentX
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00508H Record Type 0091
  Error 1: Previous Definition Different : _vdnGlobalAppliedMomentY
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0052CH Record Type 0091
  Error 1: Previous Definition Different : _vdnGlobalAppliedMomentZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00548H Record Type 0091
  Error 1: Previous Definition Different : _vdnLocalAppliedForceX
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00564H Record Type 0091
  Error 1: Previous Definition Different : _vdnLocalAppliedForceY
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00580H Record Type 0091
  Error 1: Previous Definition Different : _vdnLocalAppliedForceZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 005A3H Record Type 0091
  Error 1: Previous Definition Different : _vdnLocalAppliedMomentX
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 005C0H Record Type 0091
  Error 1: Previous Definition Different : _vdnLocalAppliedMomentY
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 005DDH Record Type 0091
  Error 1: Previous Definition Different : _vdnLocalAppliedMomentZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 005F6H Record Type 0091
  Error 1: Previous Definition Different : _vdnRefCurrentSpeed
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00619H Record Type 0091
  Error 1: Previous Definition Different : _vdnRefCurrentDirection
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00639H Record Type 0091
  Error 1: Previous Definition Different : _vdnWholeSimulationTension
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0065CH Record Type 0091
  Error 1: Previous Definition Different : _vdnWholeSimulationPayoutRate
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00674H Record Type 0091
  Error 1: Previous Definition Different : _vdnXBendStiffness
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00691H Record Type 0091
  Error 1: Previous Definition Different : _vdnXBendMomentIn
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 006A8H Record Type 0091
  Error 1: Previous Definition Different : _vdnYBendMomentIn
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 006C0H Record Type 0091
  Error 1: Previous Definition Different : _vdnXBendMomentOut
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 006D8H Record Type 0091
  Error 1: Previous Definition Different : _vdnYBendMomentOut
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 006F3H Record Type 0091
  Error 1: Previous Definition Different : _moduleDynamics
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00709H Record Type 0091
  Error 1: Previous Definition Different : _moduleVIV
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00786H Record Type 0091
  Error 1: Previous Definition Different : _pnBuildUp
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0081BH Record Type 0091
  Error 1: Previous Definition Different : _D8OrcFxAPI6Period6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00841H Record Type 0091
  Error 1: Previous Definition Different : _D8OrcFxAPI11ObjectExtra6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00868H Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI12ObjectExtra26__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0087BH Record Type 0091
  Error 1: Previous Definition Different : _ptEndA
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0088EH Record Type 0091
  Error 1: Previous Definition Different : _ptEndB
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 008A0H Record Type 0091
  Error 1: Previous Definition Different : _ptTouchdown
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 008B0H Record Type 0091
  Error 1: Previous Definition Different : _ptNodeNum
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 008C2H Record Type 0091
  Error 1: Previous Definition Different : _ptArcLength
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 008D6H Record Type 0091
  Error 1: Previous Definition Different : _rpInner
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 008EAH Record Type 0091
  Error 1: Previous Definition Different : _rpOuter
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 008FDH Record Type 0091
  Error 1: Previous Definition Different : _dtreal
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00913H Record Type 0091
  Error 1: Previous Definition Different : _dtInteger
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00922H Record Type 0091
  Error 1: Previous Definition Different : _dtString
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00933H Record Type 0091
  Error 1: Previous Definition Different : _dtVariable
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0094DH Record Type 0091
  Error 1: Previous Definition Different : _rtTimeHistory
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00966H Record Type 0091
  Error 1: Previous Definition Different : _rtRangeGraph
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0097FH Record Type 0091
  Error 1: Previous Definition Different : _rtLinkedStatistics
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00993H Record Type 0091
  Error 1: Previous Definition Different : _msReset
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 009B4H Record Type 0091
  Error 1: Previous Definition Different : _msCalculatingStatics
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 009CAH Record Type 0091
  Error 1: Previous Definition Different : _msInStaticState
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 009E4H Record Type 0091
  Error 1: Previous Definition Different : _msRunningSimulation
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 009FEH Record Type 0091
  Error 1: Previous Definition Different : _msSimulationStopped
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00AD0H Record Type 0091
  Error 1: Previous Definition Different : _msSimulationStoppedUnstable
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00AFAH Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI15StatisticsQuery6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00B22H Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI13WaveComponent6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00B83H Record Type 0091
  Error 1: Previous Definition Different : _D8OrcFxAPI10GraphCurve6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00C7CH Record Type 0091
  Error 1: Previous Definition Different : _D8OrcFxAPI10ObjectInfo6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00CABH Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI20RangeGraphCurveNames6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00CD4H Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI14ViewParameters6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00D3EH Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI23SolveEquationParameters6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00D99H Record Type 0091
  Error 1: Previous Definition Different : _D8OrcFxAPI7VarInfo6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00E18H Record Type 0091
  Error 1: Previous Definition Different : _D8OrcFxAPI9TimeSteps6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00EE3H Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI42UseCalculatedPositionsForStaticsParameters6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00F15H Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI23RunSimulationParameters6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00F47H Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI17AVIFileParameters6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00F60H Record Type 0091
  Error 1: Previous Definition Different : _eaInitialise
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00FB7H Record Type 0091
  Error 1: Previous Definition Different : _eaFinalise
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00FC9H Record Type 0091
  Error 1: Previous Definition Different : _eaCalculate
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00FE2H Record Type 0091
  Error 1: Previous Definition Different : _eaStoreStateCreate
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 00FFCH Record Type 0091
  Error 1: Previous Definition Different : _eaStoreStateDestroy
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0101AH Record Type 0091
  Error 1: Previous Definition Different : _eaCalculateNominalValue
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 010FAH Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI20ExternalFunctionInfo6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 01135H Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI32NodeInstantaneousCalculationData6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 01210H Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI34VesselInstantaneousCalculationData6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0124BH Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI32BuoyInstantaneousCalculationData6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0128CH Record Type 0091
  Error 1: Previous Definition Different : 
_D8OrcFxAPI32WingInstantaneousCalculationData6__initZ
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 012ACH Record Type 0091
  Error 1: Previous Definition Different : _thstSpectralDensity
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 012D2H Record Type 0091
  Error 1: Previous Definition Different : _thstEmpiricalDistribution
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 012EFH Record Type 0091
  Error 1: Previous Definition Different : _thstRainflowHalfCycles
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 01304H Record Type 0091
  Error 1: Previous Definition Different : _propObjectName
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0131AH Record Type 0091
  Error 1: Previous Definition Different : _propNumOfStages
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 01338H Record Type 0091
  Error 1: Previous Definition Different : _propStageDuration
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0134DH Record Type 0091
  Error 1: Previous Definition Different : _propNumOfNodes
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 01365H Record Type 0091
  Error 1: Previous Definition Different : _propNumOfSegments
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 0137DH Record Type 0091
  Error 1: Previous Definition Different : _propNodeArcLength
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 01398H Record Type 0091
  Error 1: Previous Definition Different : _propSegmentArcLength
bin\default\OrcFxAPI.obj(OrcFxAPI)  Offset 01445H Record Type 0091
  Error 1: Previous Definition Different : _D8OrcFxAPI12__ModuleInfoZ
C:\dmd\lib\phobos.lib(ti_double)  Offset 2941CH Record Type 0091
  Error 1: Previous Definition Different : _D10TypeInfo_d6__initZ
C:\dmd\lib\phobos.lib(ti_double)  Offset 29439H Record Type 0091
  Error 1: Previous Definition Different : _D10TypeInfo_d7__ClassZ
C:\dmd\lib\phobos.lib(ti_double)  Offset 29455H Record Type 0091
  Error 1: Previous Definition Different : _D10TypeInfo_d6__vtblZ
project "/OrcfxAPITest" build finished

----------------------------------------------------------------------
Interestingly, if I do this from the command line, I get this output:

K:\Projects\SoftwareDev\Learn D\OrcFxAPITest\src>dmd -run ./test.d 
OrcFxAPI.d OrcFxAPI.lib
OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved

C:\dmd\bin\..\lib\phobos.lib(dmain2)
  Error 42: Symbol Undefined _C_GetDLLVersion at 16
--- errorLevel 1
-----------------------------------------------------------------------
So, I'm not sure if I should/can compile this as a D module, or if it 
should/can get statically linked or something else...as before, any help 
is very much appreciated



More information about the Digitalmars-d-learn mailing list