c++ - 链接器:如果我在程序中不使用 float ,则 "__fltused"被多重定义

标签 c++ visual-studio linker sdl-2

完整的输出是这样的(只有一个错误),发布版本似乎没有遇到同样的问题

SDL2.lib(SDL_stdlib.obj) : error LNK2005: __fltused already defined in LIBCMTD.lib(fltused.obj)`

我用/MTd 重新编译了 SDL2.lib 并将其作为静态库,并确保它是我系统上唯一同名的库。

虽然它变得奇怪:在我的程序中的任何地方放置一个浮点运算允许它毫无问题地链接:

int main(int argc, char * argv[]) {
    return 0;  // will not link
}

int main(int argc, char * argv[]) {
    float flt = 0.0f; // gets around optimization
    return int(flt); // will link
}

这当然不理想,这里的潜在问题可能是什么?

最佳答案

你可以试试这个,据我所知,这可以绕过它。

#ifdef __cplusplus 
extern "C" { 
#endif 
int __fltused=0; 
#ifdef __cplusplus 
} 
#endif

关于c++ - 链接器:如果我在程序中不使用 float ,则 "__fltused"被多重定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46247483/

相关文章:

c++ - 与指针的组成

c++ - 当您追求性能时,类(class)是否应该执行边界检查

c++ - 埃拉托斯特尼筛法 C++ 无限循环

asp.net - 如何强制 Visual Studio 重新生成 aspx/ascx 文件的 .designer 文件?

visual-c++ - 为什么 MSVC 2010 32 位项目链接到 64 位 kernel32.dll?

c++ - Qt QML 数据模型似乎不适用于 C++

c++ - 自定义C++可以吗?

visual-studio - CMake:如何指定要使用的 Visual C++ 版本?

c++ - 避免上课不见面? C++

gcc - 为什么丢失的共享库会致命?