How to get VS2013 to stop generating calls to __dtol3, __dtoui3, and other functions for casting between integer types?

You would need to disable SSE2 codegen, through use of the /arch option (use either /arch:IA32 or /arch:SSE).

Alternatively...(what follows is not officially supported; your mileage may vary; do this at your own risk)

Extract from msvcrt.lib the object that defines these functions, and link that object directly into your program. These functions are defined in the object named ftol3.obj; you can extract it using the lib tool:

=>lib /nologo /list msvcrt.lib | findstr ftol3
f:\binaries\Intermediate\vctools\crt_bld\SELF_X86\crt\prebuild\INTEL\dll_lib\ftol3.obj

=>lib /nologo /extract:f:\binaries\Intermediate\vctools\crt_bld\SELF_X86\crt\prebuild\INTEL\dll_lib\ftol3.obj msvcrt.lib

You may need additional objects, depending on (a) which functions you use and (b) what, exactly, the INtime libraries define. Again, this is not a supported way to use the Visual C++ runtime libraries, and it may or may not work for your particular use case.


possibly another way:

add compile option /d2noftol3

this option is undocumented