我不确定以下代码:

.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的函数。

10-08 10:50