早上好,
我刚刚从一位已经离开的同事那里继承了一个应用程序,我已经遇到了麻烦:我们做的最后一件事就是将解决方案从Visual Studio 2010移植到2013年。
现在,在构建解决方案中的一个项目时,我收到以下错误消息:
1>usharedmemory.obj : error LNK2019: unresolved external symbol "public: __cdecl C_NamedSemaphore::C_NamedSemaphore(char const *,unsigned int)" (??0C_NamedSemaphore@@QEAA@PEBDI@Z) referenced in function "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”文件)
有人可以帮帮我吗? 感谢
答案 0 :(得分:1)
对象文件( List<String> testFilesList = new ArrayList<String>();
testFilesList.add("./testng.xml"); //test suite resides in the working directory's root folder
**testng.setTestSuites(testFilesList);** //you can addd multiple suites either here by adding multiple files or include all suites needed in the testng.xml file
testng.setUseDefaultListeners(false);
testng.addListener(htmlRep);
testng.run();
)是编译时编译器直接从源文件(*.obj
)为项目中的每个源文件创建的。
由于 usharedmemory.obj 不存在,您收到的错误不;它应该在 Debug 或 Release 文件夹中创建。
您得到的错误是因为 usharedmemory.cpp 使用*.cpp
- C_NamedSemaphore(char const *,unsigned int)
的构造函数,并且在任何源代码中都找不到构造函数的定义文件。此构造函数用于 usharedmemory.cpp 中定义的C_NamedSemaphore
- 构造函数。这是错误消息的内容。
要解决此问题,您需要找出C_RecursiveNamedSemaphore(char const *,unsigned int)
的构造函数的定义位置(哪个源文件),并确保该源文件包含在项目中。或者,如果它位于库文件(静态或动态)中,请验证此库文件是否包含在附加依赖项中(在C_NamedSemaphore
下;确保为所有设置此项构建,而不仅仅是当前活动的构建。)
答案 1 :(得分:0)
早上好,
我终于解决了我的问题。作为一个好公民,我将描述我是如何做到的:-),但作为一个不太优秀的程序员,我需要承认我不明白我的行为如何解决问题;-(
我已经对* .vcxproj Visual Project文件(VC2010中的旧文件和新的VC2013文件)进行了文件比较。通过这种方式,我看到了&#34; umultiproc.cpp&#34; VC2013中缺少一个条目:
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<ItemGroup>
...
<ClCompile Include="..\..\mp\umultiproc.cpp" /> <!-- missing -->
摘要:在错误消息中,有一个未解析的符号(C_Semaphore构造函数),它在* .cpp / * .h source / header文件中定义。为了解决这个错误,我在* .cpp源文件中添加了对VC2013项目文件的引用。