程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了无法链接到子弹物理库 - LNK2019,LNK2001大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决无法链接到子弹物理库 - LNK2019,LNK2001?

开发过程中遇到无法链接到子弹物理库 - LNK2019,LNK2001的问题如何解决?下面主要结合日常开发的经验,给出你关于无法链接到子弹物理库 - LNK2019,LNK2001的解决方法建议,希望对你解决无法链接到子弹物理库 - LNK2019,LNK2001有所启发或帮助;

我已经使用 cmake 在 windows 上构建了 bullet3-3.08(命令已从在 bullet3-3.08 目录中创建的构建文件夹中执行):

cmake -G "Visual studio 15 2017" -A x64 -D "CMAKE_INSTall_PREFIX:PATH=C:/Mylibs/bullet3-3.08" -D "USE_MSVC_RUNTIME_liBRARY_DLL=ON" -D "INSTall_liBS=ON" ..
cmake --build . --config Release --parallel 8 --target install

我有一个使用 MD/MDd 运行时库的应用程序,因此我使用以下选项构建了 Bullet:USE_MSVC_RUNTIME_liBRARY_DLL=ON。 Bullet 默认构建为静态库。我使用 Visual studio 2017 并使用 cmake 构建我的应用程序。当我链接到 Bullet 时,我收到许多链接器错误(LNK2019、LNK2001),例如:

error LNK2019: unresolved external symbol "public: __cdecl btCollisiondispatcher::btCollisiondispatcher(class btCollisionConfiguration *)" (??0btCollisiondispatcher@@QEAA@PEAVbtCollisionConfiguration@@@z) referenced in function main
error LNK2001: unresolved external symbol "public: virtual voID __cdecl btCollisionShape::getBoundingSphere(class btVector3 &,float &)const " (?getBoundingSphere@btCollisionShape@@UEBAXAEAVbtVector3@@AEAM@z)

我在 CMakeLists.txt 中使用直接库路径:

target_link_librarIEs(${executablename} "C:/Mylibs/bullet3-3.08/lib/Bullet3Collision.lib"
                                        "C:/Mylibs/bullet3-3.08/lib/Bullet3Dynamics.lib"
                                        "C:/Mylibs/bullet3-3.08/lib/linearMath.lib")

这是 CMakeSetTings.Json:

{
  "configurations": [
    {
      "name": "x64-DeBUG","generator": "Ninja","configurationType": "DeBUG","inheritEnvironments": [
        "msvc_x64_x64"
      ],"buildroot": "${projectDir}\\build\\${name}","installroot": "${projectDir}\\install\\${name}","cmakeCommandArgs": "","buildCommandArgs": "-v","cTESTCommandArgs": ""
    },{
      "name": "x64-Release","configurationType": "Release","cTESTCommandArgs": ""
    }
  ]
}

怎么了?

解决方法

由于 Bullet 提供了一个 BulletConfig.cmake 文件,因此链接 Bullet 非常简单。

首先您需要安装 Bullet(如果没有安装)并将 -DCMAKE_PREFIX_PATH=C:/MyLibs/bullet3-3.08(或相应的安装目录)添加到您的 cmake 命令行。

然后在你的 CMakeLists.txt 文件中你需要添加

find_package(Bullet requIRED)
# your add_executable call follows here
add_executable(${executablename} .......)
target_compile_definitions(${executablename} PRIVATE ${BULLET_DEFINITIONS})
target_include_directories(${executablename} PRIVATE ${BULLET_INCLUDE_DIRS})
target_link_libraries(${executablename} PRIVATE ${BULLET_LIBRARIES})

这应该是链接到 Bullet 的必要步骤。

大佬总结

以上是大佬教程为你收集整理的无法链接到子弹物理库 - LNK2019,LNK2001全部内容,希望文章能够帮你解决无法链接到子弹物理库 - LNK2019,LNK2001所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:-