提问人:Arolan 提问时间:7/4/2023 最后编辑:Arolan 更新时间:7/4/2023 访问量:68
MSVS 链接器找不到符号
MSVS Linker doesn't find symbol
问:
我在 VS2022 中使用链接器时遇到了问题。 基本上,我有一个类,“原始”文件中的一些函数和命名空间中的一些函数。有一个简短的描述(非详尽无遗)
Embree (static lib)
- API.h的
- Embree.h(带有getIntersection_RayHit声明)
- API.cpp
- Embree.cpp(有getIntersection_RayHit定义)
LibEmbree(静态库)
- LibEmbree.h
- LibEmbree.cpp
TestLibEmbree(可执行文件)
- TestLibEmbree.cpp(需要两个库)
在构建项目时,我遇到以下错误(对于一些不同的功能,实际上还有更多错误):
1>TestLibEmbree.obj : error LNK2019: symbole externe non résolu "struct RayHit __cdecl getIntersection_RayHit(struct RTCSceneTy * const,float const *,float const *)" (?getIntersection_RayHit@@YA?AURayHit@@QEAURTCSceneTy@@PEBM1@Z) référencé dans la fonction "void __cdecl testPhil3(void)" (?testPhil3@@YAXXZ)
但是,这些函数的智能感知是自动完成的,我在编码时没有任何问题(没有下划线或红色)。
我在这个平台上看到了很多类似的问题,但我尝试的修复程序都没有真正解决问题。这可能是重复的,但是我发现的其他问题实际上都不是相似的(不是相同的配置或MSVS版本)。我相信我确实有“TestLibEmbree”文件(包含 testPhil3)的正确 #include,例如:
#include“../embree/embree.h”
你们中有人有解决这个问题的想法吗?
非常感谢您的帮助。
答:
1赞
Arolan
7/4/2023
#1
我找到了解决我问题的方法。我真的不知道为什么我的一些图书馆不需要它。
转到项目 properties->Linker->Input->Additional Dependencies,并将完整路径添加到 .lib(通常位于 x64/Release 或 /debug 文件夹中)。
然后,神奇地,它起作用了。
评论
0赞
BoP
7/4/2023
使用 Visual Studio,头文件可以包含一个 #pragma,告知链接器应链接哪个库。然后它可能会神奇地起作用。
0赞
drescherjm
7/4/2023
所以你没有关于无法打开的错误。我预计此错误以及链接器错误。如果没有,也许您在不同的文件夹中有 1 个以上的文件??Embree.lib
Embree.lib
评论
struct RayHit __cdecl getIntersection_RayHit(struct RTCSceneTy * const,float const *,float const *)
#include "../Embree/Embree.h"
不是链接器错误的解决方案。如果实现此功能,解决方案可能会将库添加到中。Linker->Input->Additional Dependencies
TestLibEmbree
LibEmbree