我正在照顾一个庞大的旧C程序,并将其转换为C ++(我是新手)。

程序必须在许多不同配置下的许多不同平台上运行,这一事实与许多复杂的预处理器黑客有关。

在一个文件(称为file1.c)中,我正在调用functionA()
在另一个文件(称为file2.c)中,我有一个functionA()的定义。

不幸的是,函数的确切类型由以多种方式创建的宏集合指定。

现在,链接器在抱怨:


  functionA是无法解析的外部符号。


我怀疑问题是在file1.c中看到的原型与在file2.c中看到的函数的真实定义稍有不同。

由于_cdeclfastcall之间以及带有和不带有__forceinline之间的不匹配,存在许多细微差异的范围。

是否有某种方法可以确切显示编译器认为的是functionA()而不是file1.cfile2.c类型?

最佳答案

您可以将一个标志传递给编译器(/ P,我认为),该标志使它输出传递给编译器的完整的预处理输出-然后,您可以打开此(巨大)文件,并在其中搜索所需的信息会在那里。

关于c++ - 函数声明和 Unresolved external ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1502629/

10-12 15:03