开发环境

在 Visual C++ 2005 中执行的一致性工作也可能导致 LNK2019;现在,默认情况下 /Zc:wchar_t 处于打开状态。可能不是所有模块都使用相同的 /Zc:wchar_t 设置编译的,这样,类型引用便没有解析为可兼容的类型。要解决此问题,请确保所有模块中的类型都是兼容的,方法是使用相应的 /Zc:wchar_t 设置进行编译(例如,要使用 Visual C++ 2005 工具集生成与以前版本中的模块链接的模块,请使用 /Zc:wchar_t-),或者尽可能更新类型以使其兼容。

现在,由于 /Zc:wchar_t 在默认情况下处于打开状态,从注释杂注或通过命令行显式引用 comsupp.lib 应改为使用 comsuppw.lib 或 comsuppwd.lib。使用 /Zc:wchar_t- 进行编译时仍应使用 comsupp.lib。

有关更多信息,请参见 Breaking Changes in the Visual C++ 2005 Compiler 和 /Zc:wchar_t(wchar_t 是本机类型)。

下面的示例创建一个导出,该导出使用解析为 wchar_t 的 WCHAR。

  
// LNK2019g.cpp
// compile with: /LD
#include "windows.h"
// WCHAR resolves to wchar_t
__declspec(dllexport) void func(WCHAR*) {}

下面的示例生成 LNK2019:

  
// LNK2019h.cpp
// compile with: LNK2019g.lib
// LNK2019 expected
__declspec(dllimport) void func(unsigned short*);

int main() {
   func(0);
}

若要解决此错误,请将 unsigned short 更改为 wchar_t 或 WCHAR,或使用 /Zc:wchar_t- 编译 LNK2019g.cpp。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lqk1985/archive/2008/10/08/3033849.aspx

相关文章
相关标签/搜索