我链接对了吗? [关闭]
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 表达我如何链接它们[关闭]