未解决的外在谜团

时间:2009-10-01 09:57:19

标签: c++ visual-studio-2008

我的链接器报告错误如下:

unresolved external symbol "unsigned char __fastcall BD_CLC(int,int)"...

但我认为所有对此函数的引用以及函数的定义都是以下形式:

__forceinline UBYTE BD_CLC(int swap,int elem);

我甚至使用“生成预处理文件”进行了编译并完成了输出。在使用BD_CLC的每个文件中,该函数被声明为

__forceinline UBYTE BD_CLC(int swap,int elem);

当然实际的函数定义被声明为

__forceinline UBYTE BD_CLC(int swap,int elem) { ... }

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

由于你已经声明了函数__forceinline,你需要确保在调用函数的任何地方都可以看到定义 - 而不仅仅是声明。

答案 1 :(得分:1)

我认为您可能必须关闭/ GR“Calling Convention”编译器选项。也许__fastcall导致链接器错误。

  

/ Gr指定__fastcall调用   所有功能的约定除外   C ++成员的功能和功能   标记__cdecl或__stdcall。所有   __fastcall函数必须有原型。

答案 2 :(得分:0)

我会尝试删除__forceinline属性。