error LNK2001: 无法解析的外部符号 在VC工程里添加附加依赖项可以解决 - 唐永华

时间:2024-04-16 20:43:34

error LNK2001: 无法解析的外部符号 在VC工程里添加附加依赖项可以解决

2013-12-09 00:58  唐永华  阅读(4831)  评论(0编辑  收藏  举报

在VC工程里添加附加依赖项可以解决,

 

1>------ 已启动生成: 项目: WinTest, 配置: Debug Win32 ------
1>生成启动时间为 2011/12/21 10:47:42。
1>InitializeBuildStatus:
1>  正在对“Debug\WinTest.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1>  所有输出均为最新。
1>ManifestResourceCompile:
1>  所有输出均为最新。
1>PlayVideo.obj : error LNK2001: 无法解析的外部符号 _TID_D3DRMFrameTransformMatrix
1>PlayVideo.obj : error LNK2001: 无法解析的外部符号 _TID_D3DRMFrame
1>PlayVideo.obj : error LNK2001: 无法解析的外部符号 _TID_D3DRMMesh
1>PlayVideo.obj : error LNK2001: 无法解析的外部符号 _TID_D3DRMAnimation
1>PlayVideo.obj : error LNK2001: 无法解析的外部符号 _TID_D3DRMAnimationSet
1>PlayVideo.obj : error LNK2001: 无法解析的外部符号 _TID_D3DRMAnimationKey
1>E:\Visual Studio 2010\Projects\WinTest\Debug\WinTest.exe : fatal error LNK1120: 6 个无法解析的
 
外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:01.04
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
 
在VC工程里添加附加依赖项dxguid.lib并在代码里添加#include<rmxfguid.h>可以解决
 
1>------ 已启动生成: 项目: WinTest, 配置: Debug Win32 ------
1>生成启动时间为 2011/12/21 11:12:49。
1>InitializeBuildStatus:
1>  正在创建“Debug\WinTest.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1>  所有输出均为最新。
1>ManifestResourceCompile:
1>  所有输出均为最新。
1>Link:
1>  所有输出均为最新。
1>PlayVideo.obj : error LNK2019: 无法解析的外部符号 __imp__CoUninitialize@0,该符号在函数 
 
_WinMain@16 中被引用
1>PlayVideo.obj : error LNK2019: 无法解析的外部符号 __imp__CoInitialize@4,该符号在函数 
 
_WinMain@16 中被引用
1>E:\Visual Studio 2010\Projects\WinTest\Debug\WinTest.exe : fatal error LNK1120: 2 个无法解析的
 
外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:00.38
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
 
 
加上这个:ole32.lib
 

__imp__InitCommonControlsEx@4 __imp__EndDialog

1>------ 已启动生成: 项目: Guest Room Management App, 配置: Debug Win32 ------
1>生成启动时间为 2011/11/27 10:51:46。
1>InitializeBuildStatus:
1>  正在创建“Debug\Guest Room Management App.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1>  所有输出均为最新。
1>ResourceCompile:
1>  所有输出均为最新。
1>ManifestResourceCompile:
1>  所有输出均为最新。
1>Link:
1>  所有输出均为最新。
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__EndDialog@8,该符号在函数 "int __stdcall DlgProc(struct HWND__ *,unsigned int,unsigned int,long)" (?DlgProc@@YGHPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__SetFocus@4,该符号在函数 "int __stdcall DlgProc(struct HWND__ *,unsigned int,unsigned int,long)" (?DlgProc@@YGHPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__SetWindowPos@28,该符号在函数 "int __stdcall DlgProc(struct HWND__ *,unsigned int,unsigned int,long)" (?DlgProc@@YGHPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__GetSystemMetrics@4,该符号在函数 "int __stdcall DlgProc(struct HWND__ *,unsigned int,unsigned int,long)" (?DlgProc@@YGHPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__GetWindowRect@8,该符号在函数 "int __stdcall DlgProc(struct HWND__ *,unsigned int,unsigned int,long)" (?DlgProc@@YGHPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__DefWindowProcA@16,该符号在函数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__PostQuitMessage@4,该符号在函数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__DestroyWindow@4,该符号在函数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__EndPaint@8,该符号在函数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__BeginPaint@8,该符号在函数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__CreateWindowExA@48,该符号在函数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__GetWindowLongA@8,该符号在函数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__GetClientRect@8,该符号在函数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__InitCommonControlsEx@4,该符号在函数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__DispatchMessageA@4,该符号在函数 _WinMain@16 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__TranslateMessage@4,该符号在函数 _WinMain@16 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__TranslateAcceleratorA@12,该符号在函数 _WinMain@16 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__GetMessageA@16,该符号在函数 _WinMain@16 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__LoadAcceleratorsA@8,该符号在函数 _WinMain@16 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__UpdateWindow@4,该符号在函数 _WinMain@16 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__ShowWindow@8,该符号在函数 _WinMain@16 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__MessageBoxA@16,该符号在函数 _WinMain@16 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__RegisterClassA@4,该符号在函数 _WinMain@16 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__GetStockObject@4,该符号在函数 _WinMain@16 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__LoadCursorA@8,该符号在函数 _WinMain@16 中被引用
1>GRMA.obj : error LNK2019: 无法解析的外部符号 __imp__LoadIconA@8,该符号在函数 _WinMain@16 中被引用
1>E:\Visual Studio 2010\Projects\Guest Room Management App\Debug\Guest Room Management App.exe : fatal error LNK1120: 26 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:01.09
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
Gdi32.lib
user32.lib

无法解析的外部符号 __imp__InitCommonControlsEx@4
comctl32.lib
version.lib

 

1>DXUT.obj : error LNK2019: 无法解析的外部符号 __imp__CommandLineToArgvW@8,该符号在函数 "void __cdecl DXUTParseCommandLine(void)" (?DXUTParseCommandLine@@YAXXZ) 中被引用
1>DXUT.obj : error LNK2019: 无法解析的外部符号 __imp__ExtractIconW@12,该符号在函数 "long __cdecl DXUTCreateWindow(wchar_t const *,struct HINSTANCE__ *,struct HICON__ *,struct HMENU__ *,int,int)" (?DXUTCreateWindow@@YAJPB_WPAUHINSTANCE__@@PAUHICON__@@PAUHMENU__@@HH@Z) 中被引用
1>DXUTmisc.obj : error LNK2019: 无法解析的外部符号 __imp__ShellExecuteW@24,该符号在函数 "bool __cdecl DXUTReLaunchMediaCenter(void)" (?DXUTReLaunchMediaCenter@@YA_NXZ) 中被引用

在[附加依赖项]中勾选[从父级或项目默认设置继承]选项
 
1>CDirectInput.obj : error LNK2001: 无法解析的外部符号 _c_dfDIMouse
1>CDirectInput.obj : error LNK2001: 无法解析的外部符号 _c_dfDIKeyboard
1>CDirectInput.obj : error LNK2019: 无法解析的外部符号 _DirectInput8Create@20,该符号在函数 
 
"public: bool __thiscall CDirectInputSystem::Initialize(struct HWND__ *,struct HINSTANCE__ 
 
*,bool)" (?Initialize@CDirectInputSystem@@QAE_NPAUHWND__@@PAUHINSTANCE__@@_N@Z) 中被引用
1>CDirectInput.obj : error LNK2001: 无法解析的外部符号 _c_dfDIJoystick2
1>E:\Visual Studio 2010\Projects\WinTest\Debug\WinTest.exe : fatal error LNK1120: 4 个无法解析的
 
外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:03.52
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
 
dinput8.lib
 
1>terrain.obj : error LNK2019: 无法解析的外部符号 "float __cdecl d3d::Lerp(float,float,float)" (?Lerp@d3d@@YAMMMM@Z),该符号在函数 "public: float __thiscall Terrain::getHeight(float,float)" (?getHeight@Terrain@@QAEMMM@Z) 中被引用
1>terrainDriver.obj : error LNK2019: 无法解析的外部符号 "bool __cdecl d3d::InitD3D(struct HINSTANCE__ *,int,int,bool,enum _D3DDEVTYPE,struct IDirect3DDevice9 * *)" (?InitD3D@d3d@@YA_NPAUHINSTANCE__@@HH_NW4_D3DDEVTYPE@@PAPAUIDirect3DDevice9@@@Z),该符号在函数_WinMain@16 中被引用


解决方案:将Lerp定义复制到.h文件中,重新运行一下,若还是出错,再拷贝回来。
由于该加的.lib文件都加上了,所以还出现这种错误就是编译器的原因,具体不甚了解.
一般无法解析的外部符号都是因为.lib文件没有包含或者对应函数没有实现定义,如果还是出错的话,那就重新编写一遍,因为可能是拷贝过来的文件,编译器有些问题。
 
1>dxut.obj : error LNK2019: 无法解析的外部符号 __imp__ExtractIconW@12,该符号在函数 "long __cdecl DXUTCreateWindow(wchar_t const *,struct HINSTANCE__ *,struct HICON__ *,struct HMENU__ *,int,int)" (?DXUTCreateWindow@@YAJPB_WPAUHINSTANCE__@@PAUHICON__@@PAUHMENU__@@HH@Z) 中被引用


solution:
add shell32.lib
 

无法打开文件"dxerr9.lib"

问题描述:使用Visual Studio 2010,DX10 SDK打开旧版本(DX9)的项目,编译运行时候提示为
fatal error LNK1104: 无法打开文件“dxerr9.lib”
================================================
问题原因:DX10中将dxerr9.lib变成了dxerr.lib(显然DX8中这个文件叫dxerr8.lib)
解决方法:
在属性管理器中,右击解决方案->属性->连接器->输入->附加依赖项,在里面找到dxerr9.lib,改成dxerr.lib
问题解决。
 
 
1>d3dUtility.obj : error LNK2005: "long __stdcall d3d::WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@d3d@@YGJPAUHWND__@@IIJ@Z) 已经在 cfont.obj 中定义
1>cfont.obj : error LNK2019: 无法解析的外部符号 "bool __cdecl d3d::InitD3D(struct HINSTANCE__ *,int,int,bool,enum _D3DDEVTYPE,struct IDirect3DDevice9 * *)" (?InitD3D@d3d@@YA_NPAUHINSTANCE__@@HH_NW4_D3DDEVTYPE@@PAPAUIDirect3DDevice9@@@Z),该符号在函数_WinMain@16 中被引用
1>dxutil.obj : error LNK2019: 无法解析的外部符号 __imp__RegCloseKey@4,该符号在函数 "long __cdecl DXUtil_GetDXSDKMediaPathCch(wchar_t *,int)" (?DXUtil_GetDXSDKMediaPathCch@@YAJPA_WH@Z) 中被引用
1>dxutil.obj : error LNK2019: 无法解析的外部符号 __imp__RegQueryValueExW@24,该符号在函数 "long __cdecl DXUtil_GetDXSDKMediaPathCch(wchar_t *,int)" (?DXUtil_GetDXSDKMediaPathCch@@YAJPA_WH@Z) 中被引用
1>dxutil.obj : error LNK2019: 无法解析的外部符号 __imp__RegOpenKeyExW@20,该符号在函数 "long __cdecl DXUtil_GetDXSDKMediaPathCch(wchar_t *,int)" (?DXUtil_GetDXSDKMediaPathCch@@YAJPA_WH@Z) 中被引用
1>dxutil.obj : error LNK2019: 无法解析的外部符号 __imp__RegSetValueExW@24,该符号在函数 "long __cdecl DXUtil_WriteStringRegKey(struct HKEY__ *,wchar_t *,wchar_t *)" (?DXUtil_WriteStringRegKey@@YAJPAUHKEY__@@PA_W1@Z) 中被引用
1>E:\Visual Studio 2010\Projects\WinTest\Debug\WinTest.exe : fatal error LNK1120: 5 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:01.19
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========


solution:未包含AdvAPI32.lib
 
d3d9.lib
d3dx9.lib
winmm.lib
Gdi32.lib
user32.lib


否则可能出现如下问题:
Mantis.obj : error LNK2001: unresolved external symbol __imp__DispatchMessageA@4
Mantis.obj : error LNK2001: unresolved external symbol __imp__TranslateMessage@4
Mantis.obj : error LNK2001: unresolved external symbol __imp__GetMessageA@16
Mantis.obj : error LNK2001: unresolved external symbol __imp__LoadStringA@16



error LNK2019: 无法解析的外部符号 _Direct3DCreate9@4