【问题标题】:Linking Library In Visual Studio 2010Visual Studio 2010 中的链接库
【发布时间】:2011-03-30 13:36:32
【问题描述】:

我无聊的时候边做一些研究,发现这个 glut32.dll、glut32.h 和 glut32.lib 文件应该包含几个不同的函数定义(如果我没记错的话)此源代码使用的功能。

我使用的是 Visual Studio 2010,因此我必须使用项目的属性手动添加 .lib 文件。所以...

  • 我转到项目/属性/配置。 Properties/VC++ 目录并将我的头文件和 .lib/.dll 文件所在的位置添加到 Include、Reference、Source 和 Library 属性中。

  • 然后我在 Config 中进入 C/C++。属性菜单,进入常规选项卡,并将我的 .h/.lib/.dll 文件的位置添加到附加包含目录中。

  • 回到 C/C++ 目录,进入 Advanced 选项卡并告诉代码编译为 C 代码(在 C 和 C++ 代码之间进行更改最终没有任何效果)。

  • 然后,离开 C/C++ 选项卡,进入配置。 Prop.s 选项卡,我进入 Linker 选项卡。在这里,我转到“其他库目录”并添加我的 .lib 和 .dll 文件所在的位置。

  • 然后进入 Input 选项卡,我在 Addition Dependencies 选项卡中写入 .lib 文件的名称。每次更改后我都点击了应用,这次点击应用/确定。

我通过代码构建并得到这个错误:

1>------ Build started: Project: simplVRML, Configuration: Debug Win32 ------
1>Build started 3/30/2011 7:46:45 AM.
1>InitializeBuildStatus:
1> Touching "Debug\simplVRML.unsuccessfulbuild".
1>ClCompile:
1> All outputs are up-to-date.
1>ManifestResourceCompile:
1> All outputs are up-to-date.
1>object.obj : error LNK2019: unresolved external symbol _arLoadPatt referenced in function _read_VRMLdata
1>object.obj : error LNK2019: unresolved external symbol _arVrmlLoadFile referenced in function _read_VRMLdata
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arVrmlDraw referenced in function _main
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arUtilTimerReset referenced in function _main
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arglSetupForCurrentContext referenced in function _main
1>simpleVRML.obj : error LNK2019: unresolved external symbol __imp__arVideoCapStart referenced in function _setupCamera
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arInitCparam referenced in function _setupCamera
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arParamDisp referenced in function _setupCamera
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arParamChangeSize referenced in function _setupCamera
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arParamLoad referenced in function _setupCamera
1>simpleVRML.obj : error LNK2019: unresolved external symbol __imp__arVideoInqSize referenced in function _setupCamera
1>simpleVRML.obj : error LNK2019: unresolved external symbol __imp__arVideoOpen referenced in function _setupCamera
1>simpleVRML.obj : error LNK2001: unresolved external symbol _arMatchingPCAMode
1>simpleVRML.obj : error LNK2001: unresolved external symbol _arTemplateMatchingMode
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arglTexmapModeGet referenced in function _debugReportMode
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arglDrawModeGet referenced in function _debugReportMode
1>simpleVRML.obj : error LNK2001: unresolved external symbol _arImageProcMode
1>simpleVRML.obj : error LNK2001: unresolved external symbol _arFittingMode
1>simpleVRML.obj : error LNK2019: unresolved external symbol __imp__arVideoClose referenced in function _Quit
1>simpleVRML.obj : error LNK2019: unresolved external symbol __imp__arVideoCapStop referenced in function _Quit
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arglCleanup referenced in function _Quit
1>simpleVRML.obj : error LNK2019: unresolved external symbol __imp__arVideoDispOption referenced in function _Keyboard
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arUtilTimer referenced in function _Keyboard
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arglTexmapModeSet referenced in function _Keyboard
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arglDrawModeSet referenced in function _Keyboard
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arGetTransMatCont referenced in function _Idle
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arGetTransMat referenced in function _Idle
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arDetectMarker referenced in function _Idle
1>simpleVRML.obj : error LNK2019: unresolved external symbol __imp__arVideoGetImage referenced in function _Idle
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arVrmlTimerUpdate referenced in function _Idle
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arglCameraViewRH referenced in function _Display
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arglCameraFrustumRH referenced in function _Display
1>simpleVRML.obj : error LNK2019: unresolved external symbol __imp__arVideoCapNext referenced in function _Display
1>simpleVRML.obj : error LNK2019: unresolved external symbol _arglDispImage referenced in function _Display
1>C:\Users\*\Desktop\AltReality\Pwork\simplVRML\Debug\simplVRML.exe : fatal error LNK1120: 34 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.81
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我可以确认问题在于我如何链接库,我肯定做错了什么,因为当我尝试将其他库链接到其他项目时,结果是相同的。我在网上查看并尝试了几个教程,但无济于事 - 有人可以告诉我我做错了什么吗?

【问题讨论】:

    标签: c++


    【解决方案1】:

    没有任何链接错误与 GLUT 函数有关。看起来您没有链接到 ARToolkit 库。这将是一个不同的库,也需要包含在您的输入行中。

    【讨论】:

      【解决方案2】:

      正如上一篇文章所说,确保您的 .dll/.lib 文件与您正在构建的 .exe/.dll 位于同一目录中,然后转到项目的“解决方案资源管理器”,右键单击在项目名称上,选择“添加”->“现有项目...”,然后选择要包含的 .dll/.lib 文件。

      您现在应该会在“解决方案资源管理器”的“源文件”部分下方看到 .dll/.lib 文件。在执行刚才描述的步骤之前,我看到了同样的错误。

      另外,请确保您的头文件包含在项目中并在源文件中适当地引用。

      【讨论】:

      • 救命...拯救我的一整天。我想给这个回复5票!
      【解决方案3】:

      尝试将.dll.lib 所需的文件放入您的项目目录中。

      【讨论】:

        【解决方案4】:

        我在构建 32 位应用程序并尝试链接到 64 位库时遇到了这个问题。也许您遇到完全相同的问题,或者可能相反。也许您正试图从 64 位可执行文件链接到 32 位库。

        要在 Visual Studio 中解决此问题,请转到配置管理器。选择正确的平台或根据需要创建一个新平台。

        【讨论】:

          【解决方案5】:

          您可以尝试一些事情:

          1. 您的 exe 所在目录中是否有该 Dll?
          2. 您的 .h 是否已添加到您的解决方案中?
          3. 您是否添加了 #include "glut32.h" 行?
          4. 尝试将 lib 添加到您的解决方案而不是项目属性中。(不理想,但现在应该可以编译)

          希望这会有所帮助, 埃蒙

          【讨论】:

          • 嘿 Eamonn :) 1- 是的 2- 是的 3- 是的 4- 你什么意思?
          • @Saint 也许你忘记把.lib文件放到你的项目目录中,尽管你已经设置了项目属性中包含的lib文件。
          • @Saint 将 lib 文件复制到与 .cpp/.h 文件相同的目录中,然后在解决方案资源管理器中右键单击您的项目,单击添加现有项目并选择 lib 文件
          【解决方案6】:

          试试这个

          #pragma comment(lib, "dev\\lib\\avformat.lib")
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-03
            • 1970-01-01
            • 2014-08-13
            • 1970-01-01
            相关资源
            最近更新 更多