我在下载了Google的2D图形引擎后,编译了源码,把生成的静态库(lib)文件都放到了自己的工程目录下,并在自己工程的源文件中定义了一个SKBitmap map;的一个对象。在连接时却出现了3个连接错误。
1>TestSkiaDlg.obj : error LNK2019: unresolved external symbol "public: __thiscall SkBitmap::~SkBitmap(void)" (??1SkBitmap@@QAE@XZ) referenced in function "protected: void __thiscall CTestSkiaDlg::DrawSkia(void)" (?DrawSkia@CTestSkiaDlg@@IAEXXZ)
1>TestSkiaDlg.obj : error LNK2019: unresolved external symbol "public: __thiscall SkBitmap::SkBitmap(void)" (??0SkBitmap@@QAE@XZ) referenced in function "protected: void __thiscall CTestSkiaDlg::DrawSkia(void)" (?DrawSkia@CTestSkiaDlg@@IAEXXZ)
1>H:\Local\Visual Studio 2012\Projects\TestSkia\Debug\TestSkia.exe : fatal error LNK1120: 2 unresolved externals
最开始我以为是编译的命名改编的问题,但是我是用同一个编译器编译的库文件和自己建立的工程。我也通过dumpbin工具查看了skia_core.lib库导出的符号。发现两个符号是完全相同的啊!
下面是dumpbin导出的片段:
074 00000000 SECT1C notype External | __real@00000000
075 00000000 UNDEF notype () External | ??0SkBitmap@@QAE@XZ (public: __thiscall SkBitmap::SkBitmap(void))
076 00000000 SECT1D notype Static | .rdata
该回答引用ChatGPT
这个错误通常发生在链接器无法找到所需的函数或变量定义时。在你的情况下,编译器无法找到SkBitmap类的构造函数和析构函数的定义。
有几种可能的原因导致这个问题:
为了解决这个问题,你可以尝试以下几个步骤: