【问题标题】:C++ LInker error (Visual Studio C++ 2010)C++ 链接器错误 (Visual Studio C++ 2010)
【发布时间】:2014-10-17 04:09:46
【问题描述】:

我尝试为 Visual Studio 创建空项目。

// OpenGL1.cpp : main project file.
// #include "stdafx.h"
#include "windows.h"
#include <GL/gl.h>
#include <iostream>

using namespace System;

int main()
{
    std::cout << "Hello World" << "\n";
    return 0;
}

已配置这些依赖项:

opengl32.lib;glu32.lib;olepro32.lib;%(AdditionalDependencies);C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl;

我得到了这个错误:

.NETFramework,Version=v4.0.AssemblyAttributes.cpp LINK : 致命错误 LNK1104: 无法打开文件 'C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl.obj'

您能解释一下为什么会发生这种情况以及如何消除错误吗?

【问题讨论】:

  • 链接器输入和包含路径是不同的东西
  • 很可能gl.h 提供了一些静态上下文对象,它是实例化的,需要GL 库进行链接。

标签: c++ opengl linker-errors


【解决方案1】:

“依赖项”指的是链接器应该使用的库文件名,而不是包含路径。包含路径适用于编译器,而不适用于链接器。

您必须首先告诉链接器在哪里可以找到 OpenGL 库文件:

http://msdn.microsoft.com/en-us/library/1xhzskbe%28v=vs.100%29.aspx

然后,作为依赖项,您只指定其名称,而不是完整路径。在这种情况下,opengl32.lib

【讨论】:

  • 库文件应该放在哪里?
  • @JohnBoe:某处接近gl.h。不自己查一下就知道了。
  • 我找到了 C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib ... 但是为什么 VS 不知道这个目录呢?这不是默认目录吗?
  • @JohnBoe:这个,我不知道 :)
  • 我已经从链接器中删除了 /ASSEMBLYDEBUG,现在它编译成功了。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 2013-12-27
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 2012-02-27
相关资源
最近更新 更多