我链接对了吗? [关闭]

Posted

技术标签:

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

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

而我要做的是:

    打开一个新的空项目 浏览到项目属性 -> 配置属性 -> VC++ 目录 从下载的 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吗? 你能把错误贴出来吗? 我做到了。是的,我会编辑。 【参考方案1】:

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

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

【讨论】:

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

以上是关于我链接对了吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

访问 db 和 sql server 2008 表达我如何链接它们[关闭]

rsync 可以用来制作硬链接,而不是复制吗? [关闭]

单击链接后关闭引导下拉菜单

运行时库只是一些动态链接的库文件吗? [关闭]

连接池你用对了吗?一次Unexpected end of stream异常的排查

如果不了解“PHP编码”,您会建议使用“mailto”方式吗? [关闭]