我有一个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之外,我还需要做其他事吗?
任何帮助都会非常感激!
答案 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