Visual c++ 汇编过程
有人能解释一下编译是如何工作的吗 我似乎不明白编译是如何工作的 更具体地说,这里有一个例子。。我正在尝试用MSVC++6编写一些代码来加载Lua状态 我已经:Visual c++ 汇编过程,visual-c++,compiler-construction,lua,visual-c++-6,Visual C++,Compiler Construction,Lua,Visual C++ 6,有人能解释一下编译是如何工作的吗 我似乎不明白编译是如何工作的 更具体地说,这里有一个例子。。我正在尝试用MSVC++6编写一些代码来加载Lua状态 我已经: 为库设置附加目录,并将文件包含到正确的目录中 使用外部“C”(因为我听说Lua只是C) 包含正确的头文件 但是我仍然在MSVC++6中遇到一些关于未解析外部符号的错误(对于我使用的Lua函数) 虽然我很想知道如何解决这个问题并继续前进,但我认为如果我能理解其中涉及的基本过程,对我来说会更好,那么谁能为这个问题写一个好的解释呢?我想知
- 为库设置附加目录,并将文件包含到正确的目录中
- 使用外部“C”(因为我听说Lua只是C)
- 包含正确的头文件
- 输入:源代码
- 流程:解析(可能在此处添加更多细节)
- 输出:此处输出的内容
- 输入:第1步输出的内容,加上可能需要的其他内容(库?DLL?.so?.lib?)
- 过程:对输入所做的一切
- 输出:任何输出
您必须进入项目设置,并在“链接器”选项卡的某个位置添加一个目录,其中包含LUA library*.lib文件。设置为“包括库”或其他,抱歉,我无法查找
之所以得到“未解决的外部符号”,是因为C++中的编译工作分两个阶段进行。首先,代码被编译,每个.cpp文件都在它自己的.obj文件中,然后“链接器”启动并将所有的.obj文件连接到.exe文件中。lib文件只是一组合并在一起的.obj文件,使库的分发更加简单。 因此,通过添加所有“#include”和extern声明,您告诉编译器在某个地方可以找到带有这些签名的代码,但链接器找不到这些代码,因为它不知道那些带有实际代码的.lib文件放在哪里
确保您已经阅读了该库的REDME,通常他们会非常详细地解释如何将其包含在代码中。步骤1-编译器:- 输入:源代码文件[s]
- 过程:解析源代码并翻译成机器代码
- 输出:对象文件,包括:
- 此对象中定义的以及此对象文件“导出”的符号的名称
- 与此对象文件中定义的每个符号关联的机器代码
- 未在本目标文件中定义,但本目标文件中的软件所依赖且随后必须链接到的符号名称,即本目标文件“导入”的名称
- 输入:
- 步骤1中的对象文件
- 其他对象库(例如来自O/S和其他软件)
- 过程:
- 对于要链接的每个对象
- 获取此对象导入的符号列表
- 在其他库中查找这些符号
- 将相应的库链接到对象文件
- 输出:一个单独的可执行文件,其中包括所有对象的机器代码,以及导入(链接)到对象的库中的对象
#include <bob.h>
int x = bob_fn(7);
cc -c -o xx.obj xx.c
cc -o xx.exe xx.obj -L/bob/libs;/usr/lib -lbob