在多个文件中使用函数时DLL库错误

时间:2018-02-04 16:42:14

标签: c++

我正在制作库,在多个游戏中使用,所以我不必重复代码。在这个例子中,我的主程序是main.cpp,其他两个文件是我的库。一切都正确联系。

如果Common Functions Library.h中的所有功能都在static之前,我会收到static function 'std::string common::joinAll(std::vector<std::string,std::allocator<_Ty>>)' declared but not defined (Error C2129)的错误:main.cpp(即使这些功能在Common Functions Library.h/.cpp中}),它表示行号比整个程序中的行号多一个,这很奇怪。

所以,要解决此问题,我发现在线人员说我需要将static替换为inline,所以我再次尝试并收到此错误:cannot open file 'Common Functions Library.lib' (Error LNK1104)

然后我尝试将所有功能设置回static,然后在#include "Cubes Library.h"中注释掉main.cpp,这不再给我其他错误,而是与之相关的事情立方体库(显然)。然而,这在第65行停止了,之后导致错误的函数说明它们没有被定义。我不知道出了什么问题,但感谢您的帮助:)

Code:

  

的main.cpp

#include "Common Functions Library.h"
#include "Cubes Library.h"

// Using functions from `Common Functions Library`
  

Common Functions Library.cpp(DLL的一部分)

#include "Common Functions Library.h"


namespace common
{
    // Functions
}
  

Cubes Library.cpp(DLL的一部分)

#include "Cubes Library.h"
#include "Common Functions Library.h"

1 个答案:

答案 0 :(得分:2)

如果您将inline放在所有功能的前面并在标头中定义,则不需要.cpp文件,因此不需要.lib

我还在namespace common中看到Common Functions Library.h。因此,在using namespace common;中使用所有课程之前,请不要忘记将main.cpp放入common::或前缀main.cpp