Я получаю эту ошибку в небольшом проекте OpenGL тетриса, и я не могу понять, как ее решить (на самом деле, используя Visual Studio 2017).
Error LNK2005 "unsigned int __cdecl Angel::InitShader(char const *,char const *)" (?InitShader@Angel@@YAIPBD0@Z) already defined in Angel.obj
Это должна быть инкриминируемая часть кода относительно initShader.cpp:
#include "Angel.h"
namespace Angel {
// Create a GLSL program object from vertex and fragment shader files
GLuint
InitShader(const char* vShaderFile, const char* fShaderFile)
Это часть Angel.h:
// Helper function to load vertex and fragment shader files
GLuint InitShader( const char* vertexShaderFile, const char* fragmentShaderFile );
А это часть Angel.cpp:
#include "Angel.h"
GLuint Angel::InitShader(const char* vertexShaderFile, const char* fragmentShaderFile)
{
return GLuint();
}
Что нужно изменить в синтаксисе, чтобы избежать ошибки?
Компоновщик сообщает вам, что Angel::InitShader
определен более одного раза, вероятно, в двух разных файлах .cpp. Проверьте свой код. Даже отсутствующий ';' ...
Похоже на разумную ошибку ... тот же символ, определенный в initShader.cpp и Angel.cpp. Не зная ничего о коде и среде сборки вашего друга, на самом деле невозможно диагностировать, почему у них нет проблем. Посмотрите, не запускает ли их полная очистка и восстановление.