谁能解释编译是如何工作的?
我似乎无法弄清楚编译是如何工作的..
更具体地说,这是一个示例。我正在尝试在 MSVC++ 6 中编写一些代码来加载 Lua 状态。
我已经:
- 设置库的附加目录并将文件包含到正确的目录
- 使用了 extern "C" (因为 Lua 只是 C 或者我听说的)
包含正确的头文件
但是我仍然在 MSVC++6 中遇到一些关于未解析外部符号的错误(对于我使用的 Lua 函数)。
尽管我很想知道如何解决这个问题并继续前进,但我认为如果我了解所涉及的底层过程对我来说会更好,那么任何人都可以为此写一个很好的解释吗?我想知道的是过程..它可能看起来像这样:
第1步:
- 输入:源代码
- 过程:解析(也许在这里添加更多细节)
- 输出:这里输出什么..
第2步:
- 输入:步骤 1 输出的任何内容,以及可能需要的任何其他内容(库?DLL?.so?.lib?)
- 过程:对输入所做的任何事情
- 输出:输出什么
等等..
谢谢..
也许这将解释什么是符号,究竟是什么“链接”,什么是“对象”代码或其他什么......
谢谢。。对不起,我是个菜鸟。。
PS这不一定是特定语言的..但是请随意用您最熟悉的语言表达它.. :)
编辑:所以无论如何,我能够解决错误,事实证明我必须手动将 .lib 文件添加到项目中;简单地在 IDE 设置或项目设置中指定库目录(.lib 所在的位置)不起作用..
但是,下面的答案在一定程度上帮助我更好地理解了这个过程。非常感谢!.. 如果有人还想写一个详尽的指南,请做.. :)
编辑:仅供参考,我发现一位作者(Mike Diehl)的两篇文章很好地解释了这一点.. :) 检查编译过程:第 1 部分 检查编译过程:第 2 部分