请教了。
出现十几个
LINK : warning LNK4049: locally defined symbol "__mbsnbcpy" imported
LINK : warning LNK4049: locally defined symbol "_memmove" imported
LINK : warning LNK4049: locally defined symbol "_ceil" imported
LINK : warning LNK4049: locally defined symbol "_strstr" imported
LINK : warning LNK4049: locally defined symbol "__mbscmp" imported
LINK : warning LNK4049: locally defined symbol "_atol" imported
LINK : warning LNK4049: locally defined symbol "_wcslen" imported
LINK : warning LNK4049: locally defined symbol "_wcscpy" imported
LINK : warning LNK4049: locally defined symbol "__beginthreadex" imported
LINK : warning LNK4049: locally defined symbol "_vsprintf" imported
LINK : warning LNK4049: locally defined symbol "_free" imported
LINK : warning LNK4049: locally defined symbol "_malloc" imported
LINK : warning LNK4049: locally defined symbol "_atoi" imported
怎么解决??

解决方案 »

  1.   

    链接器工具警告 LNK4049错误消息
    已导入本地定义的符号“symbol”
    该符号被同时从程序导出和导入到程序中。当使用一个对象文件中的 __declspec(dllexport) 存储类属性声明符号,但使用另一对象文件中的 __declspec(dllimport) 属性引用该符号时,链接器将生成此警告。警告 LNK4049 是链接器工具警告 LNK4217 的更为常见的形式。当链接器无法确定从哪个函数引用的导入符号时便会生成警告 LNK4049。下面是生成 LNK4049 而不是 LNK4217 的常见情况:使用 /INCREMENTAL 选项执行增量链接。使用 /LTCG 选项执行全程序优化。若要解决 LNK4049 问题,请执行以下操作之一:从触发 LNK4049 的符号的前向声明中移除 __declspec(dllimport) 名称声明。您可以使用 DUMPBIN 实用工具在二进制图像中搜索符号。DUMPBIN /SYMBOLS 开关可显示该图像的 COFF 符号表。有关 DUMPBIN 实用工具的更多信息,请参见 DUMPBIN 参考。暂时禁用增量链接和全程序优化。重新编译该应用程序将生成警告 LNK4217,警告中将包含从中引用所导入符号的函数的名称。请从导入的符号中移除 __declspec(dllimport) 声明,然后根据需要启用增量链接或全程序优化。尽管最终生成的代码可以正常运行,不过,生成代码来调用导入的函数比直接调用该函数效率低。使用选项 /clr 进行编译时不会出现此警告。有关导入和导出数据声明的更多信息,请参见 dllexport, dllimport。示例
    链接以下两个模块将生成 LNK4049。第一个模块生成一个对象文件,其中包含单个导出函数。  复制代码 
    // LNK4049a.cpp
    // compile with: /c__declspec(dllexport) int func() 
    {
       return 3;
    }
     第二个模块生成一个对象文件,其中包含对第一个模块中导出的函数的前向声明以及在 main 函数中对此函数的调用。将此模块与第一个模块相链接将生成 LNK4049。移除 __declspec(dllimport) 声明将消除该警告。  复制代码 
    // LNK4049b.cpp
    // compile with: /link /WX /LTCG LNK4049a.obj
    // LNK4049 expected__declspec(dllimport) int func();
    // try the following line instead
    // int func();int main()
    {
       return func();
    }