我正在制作库,在多个游戏中使用,所以我不必重复代码。在这个例子中,我的主程序是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"
答案 0 :(得分:2)
如果您将inline
放在所有功能的前面并在标头中定义,则不需要.cpp
文件,因此不需要.lib
。
我还在namespace common
中看到Common Functions Library.h
。因此,在using namespace common;
中使用所有课程之前,请不要忘记将main.cpp
放入common::
或前缀main.cpp
。