0

我收到链接器警告

warning LNK4217: locally defined symbol lzma_check_is_supported imported in function "void __cdecl parse_real(struct args_info *,int,char * *)" (?parse_real@@YAXPAUargs_info@@HPAPAD@Z)

lzma_check_is_supported函数存在于另一个目录中的某个其他 .cpp 文件中。parse_real存在于不同的一个。我-I../src/common在编译源代码时给出了路径(其中包含此函数的定义)。但是,它似乎不起作用并且应用程序崩溃。

此外,如果我将代码粘贴到lzma_check_is_supported包含应用程序崩溃的文件中parse_real,但这次崩溃发生得更远一些(在 windbg 中看到了这一点)。

我猜测链接器无法使用函数定义,因此它可能正在导入。起初,我忽略了这个警告,但后来我发现这是主要问题。

MSDN http://msdn.microsoft.com/en-us/library/aa3se25k(v=vs.80).aspx说用/clr. 但后来我得到error LNK2022: metadata operation failed (80131188) : Inconsistent field declarations in duplicated types (types: lzma_coder_s; fields: <alignment member>): (0x04000003).

我提到了其他帖子说要删除调试文件夹并重新构建(不起作用)。我只想解决链接器警告。我通过使用/clr标志编译是否正确?

如果是,那么我该如何修复元数据错误?

谢谢

4

0 回答 0