我不确定以下代码:
.lib项目
Unit.h
namespace mynamespace {
static void myFunction()
{
printf("hello world");
}
void myFunction2();
}
Unit.cpp
#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)静态应该意味着“与内部联系”,这是否意味着mainapp.cpp和unit.cpp都将拥有myFunction的“副本”?
答案 0 :(得分:8)
您需要在命名空间中实现该功能:
void mynamespace::myFunction2() { printf("hello world"); }
目前,在Unit.cpp中,您正在定义一个不同的函数; 全局命名空间中名为myFunction2
的函数。
答案 1 :(得分:1)
...在命名空间中实现该功能......
Unit.cpp
namespace mynamespace {
void myFunction2() { printf("hello world"); }
}