如何让VS2013停止生成对__dtol3,__ dtoui3和其他函数的调用,以便在整数类型之间进行转换?

Cpp*_*man 8 c++ assembly casting visual-c++-2013

我正在升级面向INtime RTOS的Visual Studio 2010项目.执行转换操作的代码无法链接.在研究"内联汇编"输出文件时,事实证明,对于某些整数转换操作,VS2013正在生成对__dtol3,__ ttoui3,__ dtoul3,__ ltod3和__ultod3的调用的汇编指令.问题是INtime库不包含这些函数的定义.我已经验证了VS2013对于Debug和Release版本的Win32目标也是如此.

有没有办法让VS2013停止生成对这些功能的生成调用?

Jam*_*lis 14

你会需要禁用SSE2代码生成,通过使用/拱选项(使用/弓:IA32或/弓:SSE).

或者......(以下内容未得到官方支持 ;您的里程可能会有所不同;请自行承担风险)

从msvcrt.lib中提取定义这些函数的对象,并将该对象直接链接到您的程序中.这些函数在名为ftol3.obj的对象中定义; 你可以用它提取LIB工具:

=>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
Run Code Online (Sandbox Code Playgroud)

您可能需要其他对象,具体取决于(a)您使用的功能和(b)INtime库定义的内容.同样,这不是使用Visual C++运行时库的受支持方式,它可能适用于您的特定用例,也可能不适用.