【问题标题】:Am I linking it right? [closed]我链接对了吗? [关闭]
【发布时间】:2013-10-23 15:28:18
【问题描述】:

于是我从opengl红皮书下载了这个rar:http://www.opengl-redbook.com/Code/oglpg-8th-edition.zip

而我要做的是:

  1. 打开一个新的空项目
  2. 浏览到项目属性 -> 配置属性 -> VC++ 目录
  3. 从下载的 Winrar 添加 lib 和 include 文件夹。

这就是我所做的一切,当我运行项目时,我得到了很多错误:\

我做错了什么,我应该怎么做才能让它对我有用?

编辑:这些是我得到的错误:

Warning 7   warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library   C:\Users\Naor\documents\visual studio 2012\Projects\RedBook\RedBook\LINK    RedBook
Warning 1   warning C4305: 'initializing' : truncation from 'double' to 'GLfloat'   c:\users\naor\documents\visual studio 2012\projects\redbook\redbook\source.cpp  25  1   RedBook
Warning 2   warning C4305: 'initializing' : truncation from 'double' to 'GLfloat'   c:\users\naor\documents\visual studio 2012\projects\redbook\redbook\source.cpp  26  1   RedBook
Warning 3   warning C4305: 'initializing' : truncation from 'double' to 'GLfloat'   c:\users\naor\documents\visual studio 2012\projects\redbook\redbook\source.cpp  27  1   RedBook
Warning 4   warning C4305: 'initializing' : truncation from 'double' to 'GLfloat'   c:\users\naor\documents\visual studio 2012\projects\redbook\redbook\source.cpp  28  1   RedBook
Warning 5   warning C4305: 'initializing' : truncation from 'double' to 'GLfloat'   c:\users\naor\documents\visual studio 2012\projects\redbook\redbook\source.cpp  29  1   RedBook
Warning 6   warning C4305: 'initializing' : truncation from 'double' to 'GLfloat'   c:\users\naor\documents\visual studio 2012\projects\redbook\redbook\source.cpp  30  1   RedBook
Error   8   error LNK2019: unresolved external symbol _LoadShaders referenced in function "void __cdecl init(void)" (?init@@YAXXZ)  C:\Users\Naor\documents\visual studio 2012\Projects\RedBook\RedBook\Source.obj  RedBook
Error   9   error LNK1120: 1 unresolved externals   C:\Users\Naor\documents\visual studio 2012\Projects\RedBook\Debug\RedBook.exe   1   1   RedBook

这就是代码:http://pastebin.com/X55tVP3d

【问题讨论】:

  • 你以前用过VisualStudio吗?
  • 你能把错误贴出来吗?
  • 我做到了。是的,我会编辑。

标签: c++ visual-studio opengl linker


【解决方案1】:
  1. warning LNK4098 => 第一个警告表明您的项目使用的 C 运行时不同于依赖项使用的 C 运行时(通常是静态与动态,发布与调试)。这由设置控制Code Generation > Runtime Library
    详情可以在这里找到:Resolving LNK4098: defaultlib 'MSVCRT' conflicts with

  2. error LNK2019 => 链接器找不到函数init(void) 中使用的LoadShaders 的定义。要么您忘记添加包含 LoadShaders 定义的 cpp 文件,要么您忘记在项目中添加库。

【讨论】:

  • 我可以做些什么来修复警告?我添加了 cpp,这些是错误的:pastebin.com/Y1WxZ58W
  • 我更新了答案。在您的情况下,我认为您的项目使用静态调试版本,而您的依赖项使用动态调试版本。你能检查一下你的项目的设置吗?是/MTd吗?
  • 我没有 /MTd 作为选项。我的设置在 /MDd
  • 好的,那么在您的设置中使用 /MTd 应该可以修复 C 运行时的一致性。您能确认一下吗?
  • 我明白了。我检查了你在问题中提到的包,我认为 LNK4098 警告是由于与 oglpg 无关的依赖关系。恐怕你必须检查你的 dll 使用的运行时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 2020-05-03
  • 2020-01-22
相关资源
最近更新 更多