Winapi GetModuleFileName在哪里?

Winapi GetModuleFileName在哪里?,winapi,visual-c++,visual-studio-2013,Winapi,Visual C++,Visual Studio 2013,我试图在Visual Studio 2013中使用GetModuleFileName,但它表示符号未定义。我搜索了硬盘上的所有.h文件,其中任何一个都没有GetModuleFileName 此功能是否已被其他功能取代?应该在哪个文件中定义它?答案如下: 请注意头和库部分,以及函数是用A和W变量声明的事实。您可能弄乱了项目属性,并意外地从链接器依赖项中删除了kernel32.lib 检查项目的配置是否有链接3/LIB在链接器的依赖项罪犯:PoC+C++不需要很多Windows函数。不必要的,但是一

我试图在Visual Studio 2013中使用GetModuleFileName,但它表示符号未定义。我搜索了硬盘上的所有.h文件,其中任何一个都没有GetModuleFileName

此功能是否已被其他功能取代?应该在哪个文件中定义它?

答案如下:


请注意头和库部分,以及函数是用A和W变量声明的事实。

您可能弄乱了项目属性,并意外地从链接器依赖项中删除了kernel32.lib


检查项目的配置是否有链接3/LIB在链接器的依赖项

罪犯:PoC+C++不需要很多Windows函数。不必要的,但是一旦你知道它正在发生,你就可以解决它。请参阅Poco的“Unwindows.h”文件,了解它们取消定义的Windows函数列表。

包含应该是您所需要的全部。我同意,应该就是这么简单。但至少对我来说不是这样。投票结果是反对票吗?很明显,这是你这边的问题,因为代码或设置只有你才能看到。这是c/c++还是一些.Net的东西?显示您的.cpp文件,该文件包含WinMain,我已阅读文档。如果是这么简单,我就不会发帖了。当我浏览GetModuleFileName的所有.h文件时,它还应该找到这两个变体。在另一台PC上,我看到在一个名为libloaderapi.h的文件中定义GetModuleFileName GetModuleFileNameA。Winbase中没有声明。h@Bungles你的文件出了点问题。是时候重新安装了,而不是试图在另一台电脑上编译,即使是那台电脑,它也不喜欢GetModuleFileName。我必须显式地使用GetModuleFileNameA,这是没有意义的,因为我上面提到的定义在同一个文件中?您的项目中确实定义了UNICODE和UNICODE,对吗?如果是这样的话,两台电脑上都出现了令人难以置信的故障。。。您还应该注意到winbase.h包括libloaderapi.h;这不是一个重要的细节,因为无论如何都不应该直接包含这些细节。所讨论的错误是编译器错误,而不是链接器错误。@RemyLebeau,AFAIK'symbol is undefined'是链接器消息。不是编译器@VladFeinstein,是的,它确实应该是未解决的,但我试图保留问题中发布的内容符号是未定义的,这里重要的是表示链接消息的关键字符号,这不是编译器消息。术语符号并不意味着链接器错误。如果编译器查找失败,它也会报告一个符号错误。那么你到底没有在winbase.h中查找过吗?是的。它不在Winbase.h中。正如我所说的,它是在libloaderapi.h。Microsoft的在线文档已过时。为供将来参考,请添加poco标记。它最明确地位于winbase.h中,而不是在8.1 Win32 SDK中,VS 2013默认使用该SDK,至少对我来说是这样。它位于同一目录中的c:\program files x86\Windows Kits\8.1\Include\um\WinBase.h和libloaderapi.h中。