我正在使用超级第6版学习OpenGL,同时编译此代码:
#include <iostream>
#include "sb6.h"
class my_application : public sb6::application
{
public:
void render(double currentTime)
{
static const GLfloat red[] = { 1.0f,0.0f,0.0f,1.0f };
glClearBufferfv(GL_COLOR, 0, red);
}
};
DECLARE_MAIN(my_application);
我收到链接错误,说无法打开sb6_d32.lib
我搜索了整个sb6目录,没有sb6_d32.lib文件可供它打开,以便我可以链接它?我错过了什么吗?
编辑:2个未解析的外部
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) OpenGL_learning E:\C++\Learning\OpenGL\OpenGL_learning\OpenGL_learning\MSVCRTD.lib(exe_main.obj) 1
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol __imp____iob_func referenced in function __glfwPlatformOpenWindow OpenGL_learning E:\C++\Learning\OpenGL\OpenGL_learning\OpenGL_learning\GLFW_d32.lib(win32_window.obj) 1
答案 0 :(得分:0)
你必须先建立它。请参阅示例文件夹根目录中的HOWTOBUILD.txt
文件:
Windows / Microsoft Visual Studio 2010:
项目文件包含在Visual Studio的源存档中 这些将与专业(所有层)和Express版本一起使用。较新版本的Visual Studio 应导入它们 很好,但这没有经过广泛测试。只需打开sb6.sln文件 在Visual Studio和命中构建(F7)。 Evertything会建立,你会 最后在&#39; bin中使用二进制文件。 。目录
更新:未解析的外部。
LNK2019未解析的外部符号_main引用 function&#34; int __cdecl invoke_main(void)&#34; (?invoke_main @@ YAHXZ)
让我们在DECLARE_MAIN
:
sb6.h
宏实现
#if defined _WIN32
#define DECLARE_MAIN(a) \
sb6::application *app = 0; \
int CALLBACK WinMain(HINSTANCE hInstance, \
HINSTANCE hPrevInstance, \
LPSTR lpCmdLine, \
int nCmdShow) \
{ \
a *app = new a; \
app->run(app); \
delete app; \
return 0; \
}
如果你想使用这个宏,你的程序应该被编译为windows应用程序(/SYBSYSTEM:WINDOWS
),你正在创建不受支持的控制台应用程序。更改项目设置中的子系统(链接器/系统)。
LNK2019未解析的外部符号__imp____iob_func 函数__glfwPlatformOpenWindow
中引用
有关解决该问题的方法,请参阅this。简而言之,您必须使用您的Visual Studio版本重新编译所有使用过的静态库。