gpt4 book ai didi

c - MSFT 构建、cl 和具有跨库依赖关系的链接

转载 作者:行者123 更新时间:2023-11-30 15:56:12 25 4
gpt4 key购买 nike

层次结构

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

cpu.h

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

cpu.c

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

mem.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。

我正在使用 LINK、CL 和针对 Windows8 的构建。

最佳答案

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

cpu.h

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

mem.c

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

cout << cpu_nope << endl;
cout << chuckTesta(1);

关于c - MSFT 构建、cl 和具有跨库依赖关系的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11404293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com