Use the following compile and link switches when building shared libraries on Windows.
compile and link switches
This example is for a DLL containing the my_plus function. You must include an EXPORT switch for the descriptor function for each UDF contained in the DLL.
cl /Zi /LD /I includefilepath my_main.cxx my_plus.cxx /link /map /INCREMENTAL:NO -EXPORT:extfn_use_new_api -EXPORT:my_plus /out:libiqudfex.dll
Example
set VCBASE=c:\dev\vc9 set MSSDK=C:\dev\mssdk6.0a set IQINSTALLDIR=C:\Sybase\IQ set OBJ_DIR=%IQINSTALLDIR%\IQ-15_1\samples\udf\objs set SRC_DIR=%IQINSTALLDIR%\IQ-15_1\samples\udf\src call %VCBASE%\VC\bin\vcvars32.bat
%VCBASE%\VC\bin\amd64\cl -c -nologo -DNDEBUG -DWINNT -D_USRDLL -D_WINDLL -D_WIN64 -DWIN64 -D_WIN32_WINNT=_WIN32_WINNT_WINXP -DWINVER=_WIN32_WINNT_WINXP -D_MBCS -GS -W3 -Zi -favor:AMD64 -DSYB_LP64 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHMSWNT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DPOINTERS_ARE_64BITS -DLONG_IS_64BITS -D_RWSTD_NO_EXCEPTIONS -I"%VCBASE%\VC\include" -I"%MSSDK%\include "-I"%MSSDK%\Lib\AMD64" -I"%VCBASE%\VC\lib\amd64" -DMSDCXX -DINT64_WORKAROUND -DSUPPORTS_UDAF -Od -Zi -MD -I"%IQINSTALLDIR%\IQ-15_1\sdk\include" -Fo"%OBJ_DIR%\my_interpolate.o" %SRC_DIR%\my_interpolate.cxx
%VCBASE%\VC\bin\amd64\cl -c -nologo -DNDEBUG -DWINNT -D_USRDLL -D_WINDLL -D_WIN64 -DWIN64 -D_WIN32_WINNT=_WIN32_WINNT_WINXP -DWINVER=_WIN32_WINNT_WINXP -D_MBCS -GS -W3 -Zi -favor:AMD64 -DSYB_LP64 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHMSWNT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DPOINTERS_ARE_64BITS -DLONG_IS_64BITS -D_RWSTD_NO_EXCEPTIONS -I"%VCBASE%\VC\include" -I"%MSSDK%\include "-I"%MSSDK%\Lib\AMD64" -I"%VCBASE%\VC\lib\amd64" -DMSDCXX -DINT64_WORKAROUND -DSUPPORTS_UDAF -Od -Zi -MD -I"%IQINSTALLDIR%\IQ-15_1\sdk\include" -Fo"%OBJ_DIR%\my_main.o" %SRC_DIR%\my_main.cxx
%VCBASE%\VC\bin\amd64\link /LIBPATH:%VCBASE%\VC\lib\amd64 /LIBPATH:%MSSDK%\lib\bin64 kernel32.lib -manifest -DLL -nologo -MAP:"%OBJ_DIR%\libudfex.map_deco" /OUT:"%OBJ_DIR%\libudfex.dll" "%OBJ_DIR%\my_interpolate.o" "%OBJ_DIR%\my_main.o" /DLL -EXPORT:extfn_use_new_api -EXPORT:my_interpolate
%MSSDK%\bin\mt -nologo -manifest "%OBJ_DIR%\libudfex.dll.manifest" -outputresource:"%OBJ_DIR%\libudfex.dll;2"