Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ LNK2019:未解析的外部符号,在不存在的*.obj文件中搜索_C++_Visual Studio_Visual Studio 2010_Visual Studio 2013_Lnk2019 - Fatal编程技术网

C++ LNK2019:未解析的外部符号,在不存在的*.obj文件中搜索

C++ LNK2019:未解析的外部符号,在不存在的*.obj文件中搜索,c++,visual-studio,visual-studio-2010,visual-studio-2013,lnk2019,C++,Visual Studio,Visual Studio 2010,Visual Studio 2013,Lnk2019,早上好, 我刚刚从一位离开的同事那里继承了一个应用程序,我已经遇到了麻烦:我们所做的最后一件事是将解决方案从Visual Studio 2010移植到2013。 现在,在解决方案中构建一个项目时,我收到以下错误消息: 1>usharedmemory.obj:错误LNK2019:未解析的外部符号“public:u cdecl C_NamedSemaphore::C_NamedSemaphore(char const*,unsigned int)”(??0C_NamedSemaphore@@QEAA

早上好,
我刚刚从一位离开的同事那里继承了一个应用程序,我已经遇到了麻烦:我们所做的最后一件事是将解决方案从Visual Studio 2010移植到2013。
现在,在解决方案中构建一个项目时,我收到以下错误消息:
1>usharedmemory.obj:错误LNK2019:未解析的外部符号“public:u cdecl C_NamedSemaphore::C_NamedSemaphore(char const*,unsigned int)”(??0C_NamedSemaphore@@QEAA@PEBDI@Z) 在函数“public:u cdecl C_RecursiveNamedSemaphore::C_RecursiveNamedSemaphore(char const*,unsigned int)”中引用(??0C_递归命名信号量@@QEAA@PEBDI@Z) 

此错误似乎是由文件“Y:\Ucam5\ucm\x\rip\u mlfdpf\usharedmemory.obj”(在项目目录中)引起的,但快速查看后,此*.obj文件似乎根本不存在。
因此,下一个问题是:如何确保创建*.obj文件?我已经验证了“usharedmemory.cpp”文件是否存在于主项目的目录中(相应的*.h文件位于“外部依赖项”中)这使我相信*.obj文件将在主项目的构建过程中创建。
您可以看到我的问题:我的项目引用了一个项目需要创建的文件,但是由于项目没有创建文件,他显然无法引用它,您可以看到我正在运行的循环:-)

(仅供参考,我不知道如何生成“*.obj”文件)

有人能帮我吗?
谢谢

编译时,编译器直接从源文件(
*.cpp
)为项目中的每个源文件创建对象文件(
*.obj

您收到的错误不是由usharedmemory.obj不存在引起的,应该在调试或发布文件夹中创建

出现错误是因为usharedmemory.cpp使用了
C\u namedsemapore
C\u namedsemapore(char const*,unsigned int)
-构造函数,并且在任何源文件中都找不到该构造函数的定义。该构造函数用于
C\u recursivenamedsemapore(char const*,unsigned int)
-在usharedmemory.cpp中定义的构造函数。这是错误消息的内容

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

早上好,
我终于解决了我的问题。作为一个好公民,我将描述我是如何做到的:-),但作为一个不太好的程序员,我需要承认我不明白我的行为是如何解决问题的;-(
我对*.vcxproj可视化项目文件(VC2010中的旧文件和新的VC2013文件)进行了文件比较。通过这种方式,我发现VC2013文件中缺少“umultiproc.cpp”条目:





摘要:在错误消息中,有一个未解析的符号(C_信号量构造函数),它是在*.cpp/*.h源文件/头文件中定义的。为了解决此错误,我在VC2013项目文件中添加了对*.cpp源文件的引用。

可能项目依赖项排序错误。正在查找
.obj
文件的项目是在生成
.obj
的项目之前生成的>因此,出现了错误。