技术CTO-关注编程入门知识,提供编程入门教程

您的位置: 首页 > 程序开发 > c/c++ > 正文

VS2010----LINK : fatal error LNK1104: 无法打开文件“kernel32.lib,”

来源: 技术CTO 阅读:

vs2010运行《windows程序设计第5版》上的HELLOWIN程序,出现如下问题:
\
请问该怎么解决?

VS20xx:
项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项
你好,我按照网上给出的解决方法设置如下:
\
\\
第一次建立VS2010 win32 application程序,望指教!
项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项
你截图中的附加依赖项中每个lib后面多了个逗号。
去掉逗号之后再编译:结果如下:
  所有输出均为最新。
1>WinMain.obj : error LNK2019: 无法解析的外部符号 __imp__PlaySoundW@12,该符号在函数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用
1>D:\VS C++ Programing\HelloMsg\Debug\HelloMsg.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:01.28
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
我觉得项目配置还是有误,但是不知道怎么去修改。
我记得添加库文件是要到LIB文件夹的,64位的话还要到LIB下的X64文件夹
就像这样
C:\Program Files\Microsoft SDKs\Windows\v7.0\Lib
64位
C:\Program Files\Microsoft SDKs\Windows\v7.0\Lib\x64
特殊的编译器还有
C:\Program Files\Microsoft SDKs\Windows\v7.0\Lib\IA64

之前我自己编译64位程序引用LIB库也是一大堆的无法解析的外部符号,LZ可以试一下。
PlaySound
The PlaySound function plays a sound specified by the given filename, resource, or system event. (A system event may be associated with a sound in the registry or in the WIN.INI file.) 

BOOL PlaySound(
  LPCSTR pszSound,  
  HMODULE hmod,     
  DWORD fdwSound    
);
 
Parameters
pszSound 
A string that specifies the sound to play. If this parameter is NULL, any currently playing waveform sound is stopped. To stop a non-waveform sound, specify SND_PURGE in the fdwSound parameter. 
Three flags in fdwSound (SND_ALIAS, SND_FILENAME, and SND_RESOURCE) determine whether the name is interpreted as an alias for a system event, a filename, or a resource identifier. If none of these flags are specified, PlaySound searches the registry or the WIN.INI file for an association with the specified sound name. If an association is found, the sound event is played. If no association is found in the registry, the name is interpreted as a filename. 

hmod 
Handle of the executable file that contains the resource to be loaded. This parameter must be NULL unless SND_RESOURCE is specified in fdwSound. 
fdwSound 
Flags for playing the sound. The following values are defined: 
SND_APPLICATION 
The sound is played using an application-specific association. 
SND_ALIAS 
The pszSound parameter is a system-event alias in the registry or the WIN.INI file. Do not use with either SND_FILENAME or SND_RESOURCE. 
SND_ALIAS_ID 
The pszSound parameter is a predefined sound identifier. 
SND_ASYNC 
The sound is played asynchronously and PlaySound returns immediately after beginning the sound. To terminate an asynchronously played waveform sound, call PlaySound with pszSound set to NULL. 
SND_FILENAME 
The pszSound parameter is a filename. 
SND_LOOP 
The sound plays repeatedly until PlaySound is called again with the pszSound parameter set to NULL. You must also specify the SND_ASYNC flag to indicate an asynchronous sound event. 
SND_MEMORY 
A sound event's file is loaded in RAM. The parameter specified by pszSound must point to an image of a sound in memory. 
SND_NODEFAULT 
No default sound event is used. If the sound cannot be found, PlaySound returns silently without playing the default sound. 
SND_NOSTOP 
The specified sound event will yield to another sound event that is already playing. If a sound cannot be played because the resource needed to generate that sound is busy playing another sound, the function immediately returns FALSE without playing the requested sound. 
If this flag is not specified, PlaySound attempts to stop the currently playing sound so that the device can be used to play the new sound. 

SND_NOWAIT 
If the driver is busy, return immediately without playing the sound. 
SND_PURGE 
Sounds are to be stopped for the calling task. If pszSound is not NULL, all instances of the specified sound are stopped. If pszSound is NULL, all sounds that are playing on behalf of the calling task are stopped. 
You must also specify the instance handle to stop SND_RESOURCE events. 

SND_RESOURCE 
The pszSound parameter is a resource identifier; hmod must identify the instance that contains the resource. 
SND_SYNC 
Synchronous playback of a sound event. PlaySound returns after the sound event completes. 
Return Values
Returns TRUE if successful or FALSE otherwise.

Remarks
The sound specified by pszSound must fit into available physical memory and be playable by an installed waveform-audio device driver. PlaySound searches the following directories for sound files: the current directory; the Windows directory; the Windows system directory; directories listed in the PATH environment variable; and the list of directories mapped in a network. For more information about the directory search order, see the documentation for the OpenFile function.

If it cannot find the specified sound, PlaySound uses the default system event sound entry instead. If the function can find neither the system default entry nor the default sound, it makes no sound and returns FALSE.

QuickInfo
  Windows NT: Requires version 3.1 or later.
  Windows: Requires Windows 95 or later.
  Windows CE: Unsupported.
  Header: Declared in mmsystem.h.
  Import Library: Use winmm.lib.
  Unicode: Implemented as Unicode and ANSI versions on Windows NT.

See Also
Waveform Audio Overview, Waveform Functions 

 
谢谢5楼的回复,在头件增加#pragma comment(lib,"WINMM.LIB"),再编译就运行成功了
请问在更改了项目属性的有关配置之后,我想恢复项目默认的属性,应该怎么操作呢?

^_^ 如果您热爱技术、热爱编程,想与更多的朋友一起交流学习,欢迎加入本站官方QQ群:345733473 ^_^