【发布时间】:2019-08-17 07:09:05
【问题描述】:
我添加到我的 cmake (3.14) 项目中的新枚举类出现链接器错误 (LNK2019)。单独地,项目在 VS 中编译,但在链接主 exe 时失败。 这是枚举定义:
#ifndef VERTEXBUFFERMODE_H
#define VERTEXBUFFERMODE_H
enum class BufferMode
{
SingleCopy,
InstanceCopy
};
#endif
我可以通过像这样实例化我的枚举来修复它:
#ifndef VERTEXBUFFERMODE_H
#define VERTEXBUFFERMODE_H
enum class BufferMode
{
SingleCopy,
InstanceCopy
} BuffMode;
#endif
但是,我收到链接器警告 LNK4006,它已经定义。虽然链接成功,但我宁愿没有它。 在我的 CMakeLists.txt 中,我链接了定义枚举的项目(Core.Graphics):
target_link_libraries(ExperimentalEngine Core.Graphics Infrastructure ${ALL_LIBS} )
更新准确的错误信息:
严重性代码描述项目文件行抑制状态 错误 LNK2019 无法解析的外部符号“public: enum BufferMode __cdecl VertexBuffer::bufferMode(void)" (?bufferMode@VertexBuffer@@QEAA?AW4BufferMode@@XZ) 中引用 函数“私有:void __cdecl VertexArray::drawArrays(class 顶点缓冲区 *)" (?drawArrays@VertexArray@@AEAAXPEAVVertexBuffer@@@Z) ExperimentalEngine C:\work\temp\experimentalengine\Core.Graphics.lib(VertexArray.obj) 1
我相信这与我没有在 cmake 中正确设置某些内容有关。有什么想法吗?
【问题讨论】:
-
您需要显示准确的错误消息,而不仅仅是数字/ID。
-
我已经用错误信息更新了它
标签: c++ visual-studio cmake