C++ 第一次尝试创建一个包含很多类的DLL,它们捆绑在一个类中
我想用Visual Studio 2015创建一个DLL。我为此创建了一个项目。我开始添加类,现在我在编译上有上千个错误。看起来我和低C类型和C++本身有冲突? 代码如下:C++ 第一次尝试创建一个包含很多类的DLL,它们捆绑在一个类中,c++,visual-studio,dll,C++,Visual Studio,Dll,我想用Visual Studio 2015创建一个DLL。我为此创建了一个项目。我开始添加类,现在我在编译上有上千个错误。看起来我和低C类型和C++本身有冲突? 代码如下: 我正在使用预编译头,是吗?关于如何解决这个问题,我可以提供一些指导。您的include指令不正确 CharacterBio.h #pragma once class CharacterBio { public: uint32_t level; uint32_t experience; uint32_
我正在使用预编译头,是吗?关于如何解决这个问题,我可以提供一些指导。您的include指令不正确 CharacterBio.h
#pragma once
class CharacterBio
{
public:
uint32_t level;
uint32_t experience;
uint32_t modifierPoints;
uint32_t skillPoints;
uint32_t devotionPoints;
uint32_t totalDevotion;
float physique;
float cunning;
float spirit;
float health;
float energy;
void read(GDCFile *);
void write(GDCFile *);
};
CharacterBio.cpp
#include "pch.h"
#include "CharacterBio.h"
#include "GDCFile.h"
#include "block.h"
#include <cstdint>
void CharacterBio::read(GDCFile *gdc)
{
// <snip>
代码的其余部分也是如此——很少有头文件包含任何内容 哦,我明白了,太棒了!如果我查看GDCFile.h,是否也必须向前声明其中的所有类?在这种情况下,向前声明将不起作用,因为像
Header
这样的类由value使用(作为GCDFile类的成员)。当您使用指针或引用(并且不取消引用它们)时,向前声明是可以的。将它们更改为指针的最佳选项是什么?或者保持原样?因为他们是公共成员,所以包含所有相关的标题可能是有意义的,因为您可能希望类的用户希望使用它们。看起来我解决了标题问题。。。但现在,在我生成obj文件后,它输出以下内容:CharacterSkills.obj:error LNK2019:未解析的外部符号“public:void\uu thiscall Vector::read(类GDCFile*)”(?read@$Vector@VSkill@@@@QAEXPAVGDCFile@@@Z)在函数“public:void\uu thiscall CharacterSkills::read(类GDCFile*)中引用(?read@CharacterSkills@@QAEXPAVGDCFile@@@Z)
我想我找到了
#include "pch.h"
#include "CharacterBio.h"
#include "GDCFile.h"
#include "block.h"
#include <cstdint>
void CharacterBio::read(GDCFile *gdc)
{
// <snip>
#pragma once
#include <cstdint>
class GDCFile;
class CharacterBio
{
public:
uint32_t level;
uint32_t experience;
uint32_t modifierPoints;
uint32_t skillPoints;
uint32_t devotionPoints;
uint32_t totalDevotion;
float physique;
float cunning;
float spirit;
float health;
float energy;
void read(GDCFile *);
void write(GDCFile *);
};