转贴 fatal error LNK1201:

本文探讨了在复杂项目开发中遇到的LNK1201错误,其原因在于调试器正在使用的目标pdb文件与编译器发生冲突。文章详细解释了这一现象,并提供了将处于调试或运行状态的vs.net程序停掉的简单解决方案。

转贴 fatal error LNK1201:

OglPMesh fatal error LNK1201: 写入程序数据库“d:/OglPMesh/Debug/OglPMesh.pdb”时出错;请检查是否是磁盘空间不足、路径无效或权限不够

上面的错误在 MSDN的解释如下:

写入程序数据库“filename”时出错;请检查是否是磁盘空间不足、路径无效或权限不够

LINK 未能写入输出文件的程序数据库 (PDB)。

可能的原因

文件已损坏。删除 PDB 文件然后重新链接。
没有足够的磁盘空间写入文件。
可能由于网络问题,驱动器不可用。
调试器在您试图链接的程序上是活动的。

工作中,最容易出现的原因是最后一条:“调试器在您试图链接的程序上是活动的。”

什么意思呢,就是复杂项目开发中,有很多个项目,你调用着我的,我使用着他的;

你的和他的又在同一个解决方案下,这在由多个dll,多个exe组成的系统中最容易出现。

即:当你编译某一项目时,该项目的pdb文件正被另一处于调试状态

下的编译器所使用,编译无法向项目pdb文件写入数据,无奈之下,编译器只好

向你报LNK1201错误请求你协助解决。


解决?把使用pdb文件的处于调试或运行状态下的vs.net停掉即可。

在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`函数,检查是否在代码中有正确的实现或引用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值