vs2015单元测试 - error LNK2011: 未链接预编译对象;映像可能不能运行

这篇博客介绍了在进行单元测试时遇到的LNK2011错误,即未链接预编译对象,导致映像可能无法运行。通过详细步骤展示了如何创建一个简单的WIN32控制台应用,添加类和函数,编写单元测试,以及在测试项目中设置附加依赖项来解决此问题。最终成功运行并显示测试结果。

单元测试的例子很多, 但都报这个错误

.obj : error LNK2011: 未链接预编译对象;映像可能不能运行

百度了很多篇文章都没有具体提到。Google一下找到答案

https://www.programmersought.com/article/6783936497/

原因是是要把stdafx.obj 加入到附加依赖项。

 

详细流程:

1. 创建一个简单的 WIN32控制台应用程序

 

2. 添加类Op, 并给该类增加两个函数Add 和 Sub

3. 添加一个单元测试

4. 在测试文件中添加待测试类对应的头文件,并编写测试用例

5. 给单元测试项目添加附加依赖项

 

6.编译 选择 测试 - 运行 - 所有测试。  在测试资源管理器中可以看到测试结果

在UE(Unreal Engine)中,error LNK2019和fatal error LNK1120通常是相互关联的,error LNK2019表示无法解析的外部符号,而fatal error LNK1120则是对解析外部符号数量的总结。对于UE中出现的类似报错,以“UnrealEditor - TimerLineForUI.dll : fatal error LNK1120: 1个无法解析的外部命令”为例,具体报错为“error LNK2019: 无法解析的外部符号 "__declspec(dllimport) class UClass * __cdecl Z_Construct_UClass_UUserWidget_NoRegister(void)"”,可以尝试以下解决办法: ### 检查依赖项 确保项目中包含了所有必要的模块和库。在UE项目中,模块的依赖关系通常在`.Build.cs`文件中定义。检查`TimerLineForUI`模块的`.Build.cs`文件,确认是否正确包含了与`UUserWidget`相关的模块。例如: ```csharp PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" }); ``` 这里的`UMG`模块是与用户界面相关的,可能包含了`UUserWidget`的定义。 ### 重新生成项目文件 有时项目文件可能会损坏或过时,导致链接错误。可以通过以下步骤重新生成项目文件: - 关闭UE编辑器。 - 找到项目根目录下的`.uproject`文件,右键点击,选择“Generate Visual Studio project files”。 - 重新打开项目。 ### 清理和重建解决方案 在Visual Studio中,清理和重建解决方案可以帮助解决一些编译和链接问题: - 右键点击解决方案资源管理器中的解决方案名称,选择“Clean Solution”。 - 清理完成后,再次右键点击解决方案名称,选择“Rebuild Solution”。 ### 检查引擎版本兼容性 确保使用的UE引擎版本与项目兼容。不同版本的UE可能会有一些API或模块的变化,如果使用了不兼容的版本,可能会导致链接错误。 ### 检查代码实现 确保代码中正确实现了所有引用的函数和类。在报错信息中提到的`Z_Construct_UClass_UUserWidget_NoRegister`函数,检查是否在代码中有正确的实现或引用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值