我收到链接警告
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
标志来做到的吗?
如果是,那么我该如何解决元数据错误?
由于