在声明后定义一个vec3

GLM Define a vec3 after declaration

本文关键字:一个 vec3 声明 定义      更新时间:2023-10-16

我正在尝试使用OpenGL编写程序。我正在使用GLM头文件库的矢量和矩阵函数,我遇到了一些非常奇怪的事情。

我有一个glm::vec3,我想用它作为一个对象的位置,所以我在我的头文件(glm::vec3 position;)中声明它,然后我想在对象构造函数(position = glm::vec3(0.0f, 0.0f, 0.0f))中实际设置它。当我尝试编译这个时,我得到一个LNK2019错误。

为了使诊断更容易,我测试了以下两段代码:
glm::vec3 position = glm::vec3(0.0f, 0.0f, 0.0f);

glm::vec3 position;
position = glm::vec3(0.0f, 0.0f, 0.0f);

第一个编译并运行得非常好。

第二个得到LNK2019错误:

main.obj : error LNK2019: unresolved external symbol "public: struct
glm::tvec3<float,0> & __thiscall glm::tvec3<float,0>::operator=(struct 
glm::tvec3<float,0> const &)" (??4?$tvec3@M$0A@@glm@@QAEAAU01@ABU01@@Z) 
referenced in function _main

我可能错过了一些非常明显的东西,但我不能弄清楚它。我正在使用VS2010,如果这有任何区别。

我一直在玩这个自己。问题似乎出在新版本的GLM上;0.9.7.0. 我把以前的每个版本都下载回0.9.5.4,没有遇到这个问题。

由于新版本是不到一个月前上传的,我想我可以假设它有一些错误。