I finally figured out my problem making a Windows module. Even though my
Windows modules linked correctly, I was using the wrong library, and it
is important to use the correct one. I know this is review, but I got it
mixed up, so I'll write it here, like detention at the chalkboard.

For a standalone program manipulating DX data, use DXLite.lib.
For a standalone program also executing DX modules, use DXCallm.lib.
For a program talking to DX over DXLink, use DXL.lib.
For a loadable module, use DXexec.lib.

DXExec.lib, unlike the others, is just an import stub for dxexec.exe,
meaning that your module, once compiled, will call DXAllocate and other
functions in DXExec.exe, itself. This is good news on Windows because it
means that your code will use the same C runtime as DXexec.exe in the
places where it needs to use the same runtime.

If you set DX to use the native Windows exec, then you should compile
against dxexec-native.lib instead of dxexec.lib. The only difference is
a few X and Windows functions:

<DXDisplayX
<DXDisplayX12
<DXDisplayX24
<DXDisplayX4
<DXDisplayX8
<DXCatchWinopenErrors
<__dxfCreateWindow
<__dxfProcessEvents
<__dxfSetXError
<__dxfXErrorHandler
>DXInitializeWindows
>DXMain

I don't see the in the html help files the difference between DX.lib and
DXCallm.lib, but the symbol tables show the following differences:
--DX.lib
<DXCacheDelete
<DXCacheInsert
<DXCacheInsertObject
<DXCacheSearch
<DXCompareModuleId
<DXCopyModuleId
<DXDeleteTaskGroup
<DXExecuteTaskGroupNoWait
<DXGetIntVariable
<DXGetModuleCacheStr
<DXGetModuleCacheStrLen
<DXGetModuleComponentName
<DXGetModulePath
<DXGetModulePathLen
<DXGetVariable
<DXLoadMDFFile
<DXLoadMDFString
<DXLoopDone
<DXLoopFirst
<DXOutboard
<DXPrintCurrentModule
<DXRegisterCallbackHandler
<DXSaveForId
<DXSetIntVariable
<DXSetVariable
<DXWinFork
<DXMain
<__dxf_ExReadXRCFiles
<_m_DXLInputNamed
<_m_SetDXLInputNamed

--DXCallm.lib
>DXInitModules
>DXInitializeXMainLoop
>DXInputAvailable
>DXqwrite
>DXsqmessage
>DXSetOutputs
>DXPrintMemoryInfo
>DXSetOutputs
>DXIsInputAvailable
>DXFreeInputs
>DXCallOutboard
>DXCheckRIH
>DXCompareModuleMacroBase
>DXGetInputs

Drew

Reply via email to