gpt4 book ai didi

c++ - LNK2019 : unresolved external symbol, 在不存在的*.obj文件中搜索

转载 作者:行者123 更新时间:2023-11-30 05:38:40 24 4
gpt4 key购买 nike

早上好
我刚刚从一个离职的同事那里继承了一个应用程序,我已经遇到了麻烦:我们所做的最后一件事是将解决方案从 Visual Studio 2010 移植到 2013。
现在,在构建解决方案中的项目之一时,我收到以下错误消息:
1>usharememory.obj:错误 LNK2019:未解析的外部符号“public:__cdecl C_NamedSemaphore::C_NamedSemaphore(char const *,unsigned int)”(??0C_NamedSemaphore@@QEAA@PEBDI@Z) 在函数“public: __cdecl C_RecursiveNamedSemaphore::C_RecursiveNamedSemaphore(char const *,unsigned int)"(??0C_RecursiveNamedSemaphore@@QEAA@PEBDI@Z)
这个错误似乎是在文件“Y:\Ucam5\ucm\x\rip_mlfdpf\usharedmemory.obj”(在项目目录中)中引起的,但快速查看后,似乎这个 *.obj 文件甚至没有存在。
因此下一个问题是:我该怎么做才能确保创建 *.obj 文件?我已经验证了“usharedmemory.cpp”文件存在于主项目的目录中(相应的 *.h 文件位于“外部依赖项”一章中,这让我相信 *.obj 文件将是在构建主项目期间创建。
你看我的问题:我的项目引用了项目需要创建的文件,但是由于项目没有创建文件,他显然不能引用它,你看我正在运行的圆圈:-)< br/>

(供您引用,我不知道如何生成“*.obj”文件)

有人能帮帮我吗?
谢谢

最佳答案

目标文件 (*.obj) 由编译器在编译时直接从源文件 (*.cpp) 创建,用于项目中的每个源文件。

您收到的错误不是是由于 usharedmemory.obj 不存在引起的;它应该在 DebugRelease 文件夹中创建。

你得到的错误是因为 usharedmemory.cpp 使用 C_NamedSemaphore(char const *,unsigned int) - C_NamedSemaphore 的构造函数和在任何源文件中都找不到构造函数的定义。此构造函数用于 C_RecursiveNamedSemaphore(char const *,unsigned int) - 在 usharememory.cpp 中定义的构造函数。这是错误消息的内容。

要解决这个问题,你需要找出C_NamedSemaphore的构造函数在哪里定义(哪个源文件),并确保这个源文件包含在你的项目中。或者,如果它在库文件(静态或动态)中,请验证该库文件是否包含为 附加依赖项(在 project Properties -> Linker -> Input -> Additional Dependencies 下;确保为所有 build设置此项,而不仅仅是当前事件的构建)。

关于c++ - LNK2019 : unresolved external symbol, 在不存在的*.obj文件中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32605132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com