0

等级制度

\Folder1
    cpu.h
    cpu.c
    sources
\Folder2
    mem.h
    mem.c
    sources
dirs

处理器.h

...
#define nope 0
...
int chuckTesta(unsigned int a);
....

中央处理器

#include <cpu.h>
int chuckTesta(unsigned int a){ ... }

内存.c

#include <cpu.h> // A
extern int chuckTesta(unsigned int a); // B

cout << nope << endl; // C
cout << chuckTesta(1); // D

有没有办法将 cpu.lib 链接到 Folder2 中的文件并满足这些要求?

  • 删除 A 行
  • C线和D线仍然有效
  • 编译和链接没有警告(现在我要么得到未解析的外部符号,要么定义错误)

注意:Folder2 的源文件只编译 Folder2 内的文件,并以 Folder1 作为包含路径。与 Folder1 类似。分别创建一个.lib 文件,cpu.lib 和mem.lib。

我正在为 Windows8 使用 LINK、CL 和构建。

4

1 回答 1

1

删除线 A 的问题是#define nope 0。如果您将定义转换为 cpu.lib 中的静态整数(或加一),它应该可以工作。只要确保在最终的可执行文件中链接到 cpu.lib 和 mem.lib 即可。

处理器.h

...
#define nope 0
static int cpu_nope = nope;
...
int chuckTesta(unsigned int a);
....

内存.c

extern int chuckTesta(unsigned int a);
extern int cpu_nope;

cout << cpu_nope << endl;
cout << chuckTesta(1);
于 2012-07-10T00:41:10.803 回答