从类内部使用库函数时出现LNK2019错误

时间:2014-04-24 00:45:54

标签: c++ lnk2019

我有一个VS2013项目,在我想要的单独文件中有一个类 使用BeaEngine来反汇编二进制文件。我添加了所有必要的东西 文件(BeaEngine.h和BeaEngine.lib)到项目并设置链接器 包含.lib。当我从内部调用Disasm函数时 main()函数我的项目编译得很好,但是当我尝试调用它时 从我班级的一个成员职能中,我得到以下内容 错误:

error LNK2019: Verweis auf nicht aufgelöstes externes Symbol 
"__imp__Disasm" in Funktion 
""private: void __thiscall BinaryBlob::callScan(unsigned int,unsigned int)"
(?callScan@BinaryBlob@@AAEXII@Z)"

所以对我而言,链接器看起来无法找到Disasm函数的实现。 如果我评论以下行,它将编译没有错误。

len = Disasm( &(this->disasm) );

我的内容如下:

#include "stdafx.h"
#include "BinaryBlob.h"
#define BEA_ENGINE_STATIC  /* specify the usage of a static version of BeaEngine */
#define BEA_USE_STDCALL    /* specify the usage of a stdcall version of BeaEngine */
#include "BeaEngine.h"

除了包括BeaEngine.h之外,我还需要做其他事吗?

任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:2)

这说明编译器可以看到.h文件(它识别.h文件名),但没有链接到库本身。我正在使用VC10,但您需要执行类似

的操作

物业页面, 常规,然后在“附加库目录”

下添加lib目录

然后

输入, 其他依赖项,将库名称为mylib.lib

如果是.dll,只需将其与程序的.exe一起使用,或者将.dll的路径添加到系统路径

基本上它就像一台割草机:如果有空气,气体和火花,它就会运转。

Air = .h file
Gas = linked to .lib or .dll (or other things on Linux)
Spark = Your program calling the lib