我不确定以下代码:
.lib项目
单位
namespace mynamespace {
static void myFunction()
{
printf("hello world");
}
void myFunction2();
}
单位
#include "Unit.h"
void myFunction2() { printf("hello world"); }
.exe项目
mainapp.cpp
#include "Unit.h"
int main()
{
mynamespace::myFunction();
mynamespace::myFunction2();
return 0;
}
1)为什么我的myFunction2()会收到“无法解析的外部符号”?我包括标题,并且符号位于另一个翻译单元中,怎么了?
2)static应该表示“具有内部链接”,这是否意味着mainapp.cpp和unit.cpp都将具有myFunction的“副本”?
最佳答案
您需要在 namespace 中实现该功能:
void mynamespace::myFunction2() { printf("hello world"); }
当前,在Unit.cpp中,您正在定义一个不同的函数。全局 namespace 中名称为
myFunction2
的函数。