RegisterWaitForSingleObject未声明(首先使用此函数)
RegisterWaitForSingleObject Undeclared (First Use This Function)
好吧,过去一周我一直在谷歌上寻找解决方案,并搜索了多个编码网站,包括以下链接:
http://boost.2283326.n4.nabble.com/boost-asio-UnregisterWaitEx-RegisterWaitForSingleObject-has-not-been-declared-td4633963.html
这就是我如何知道使用
-D_WIN32_WINNT=0x0601 -DWINVER=0x0601
在编译行中。
我使用的是带有Dev-C++的Windows7(64位),每当我编译Boost时,我都会收到以下错误:Asio示例:
Compiler: Default compiler
Building Makefile: "D:TutorialsAsioMakefile.win"
Executing make...
make.exe -f "D:TutorialsAsioMakefile.win" all
g++.exe -c main.cpp -o main.o -I"D:/Programs/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"D:/Programs/Dev-Cpp/include/c++/3.4.2/backward" -I"D:/Programs/Dev-Cpp/include/c++/3.4.2/mingw32" -I"D:/Programs/Dev-Cpp/include/c++/3.4.2" -I"D:/Programs/Dev-Cpp/include" -D_WIN32_WINNT=0x0601 -DWINVER=0x0601 -lboost_system-mgw44-mt-1_49
In file included from D:/Programs/Dev-Cpp/include/boost/asio/detail/win_object_handle_service.hpp:180,
from D:/Programs/Dev-Cpp/include/boost/asio/windows/object_handle_service.hpp:24,
from D:/Programs/Dev-Cpp/include/boost/asio/windows/basic_object_handle.hpp:27,
from D:/Programs/Dev-Cpp/include/boost/asio.hpp:99,
from main.cpp:3:
D:/Programs/Dev-Cpp/include/boost/asio/detail/impl/win_object_handle_service.ipp: In member function `void boost::asio::detail::win_object_handle_service::register_wait_callback(boost::asio::detail::win_object_handle_service::implementation_type&, boost::asio::detail::scoped_lock<boost::asio::detail::win_mutex>&)':
D:/Programs/Dev-Cpp/include/boost/asio/detail/impl/win_object_handle_service.ipp:376: error: `RegisterWaitForSingleObject' undeclared (first use this function)
D:/Programs/Dev-Cpp/include/boost/asio/detail/impl/win_object_handle_service.ipp:376: error: (Each undeclared identifier is reported only once for each function it appears in.)
D:/Programs/Dev-Cpp/include/boost/asio/detail/impl/win_object_handle_service.ipp: In static member function `static void boost::asio::detail::win_object_handle_service::wait_callback(void*, BOOLEAN)':
D:/Programs/Dev-Cpp/include/boost/asio/detail/impl/win_object_handle_service.ipp:418: error: `RegisterWaitForSingleObject' undeclared (first use this function)
make.exe: *** [main.o] Error 1
Execution terminated
我的代码如下:
#define _WIN32_WINNT 0x0601
#define __USE_W32_SOCKETS
#include <boost/asio.hpp>
#include <iostream>
int main()
{
// Cre'ation du service principal et du re'solveur.
boost::asio::io_service ios;
boost::asio::ip::tcp::resolver resolver(ios); // (1)
// Parame`trage du resolver sur Developpez.com
boost::asio::ip::tcp::resolver::query query("www.developpez.com", "80"); // (2)
// On re'cupe`re une "liste" d'ite'rateur
boost::asio::ip::tcp::resolver::iterator iter = resolver.resolve(query); // (3)
boost::asio::ip::tcp::resolver::iterator end; //Marqueur de fin
while (iter != end) // On ite`re le long des endpoints
{
boost::asio::ip::tcp::endpoint endpoint = *iter++;
std::cout << endpoint << std::endl; // on affiche (4)
}
return 0;
}
考虑到代码本身没有错误,这并不重要。这只是我一直在使用的五个教程之一,这些教程给了我与Boost:Asio相同的、完全错误的错误。
有人建议在链接器中使用"-lwsock32",在编译器中也使用"-lbostrongystem-mgw44-mt-1_49",但这并没有起到任何作用。按照建议添加"-D-WIN32_WINNT=0x0601-DWRINVER=0x0601"消除了一些错误,但这是我所得到的。
我非常认真地想在我的程序中实现Boost:Asio,所以如果我能得到一个有效的例子,我可以从各种资源中更好地理解它,并按预期使用它。因此,请不要给我任何关于"交给专业人士"或"学会编程"的信息,因为我在其他论坛上一次又一次地看到有人就这个错误寻求帮助。尽管我知道如何编程,但在使用我不熟悉的库时,我仍然会遇到这样的错误。
提前感谢!
添加
#include <windows.h>
到文件顶部,就在#define
s之后。看起来Boost使用的是一个win32函数,而它本身不包括windows.h。
相关文章:
- 函数未在作用域中声明 / 如何结合使用 header.h、header.cpp 和 main.cpp?
- 我的函数调用 (C++) 中的未声明标识符
- 未定义与已删除与未声明的函数
- C++ 在 CentOS7 中与 g++ 的 DLL 链接后未声明的函数
- 由于值返回函数中的错误,程序无法编译.它说未声明的标识符
- 为什么 C 允许我调用未声明的函数?
- 'temp'未声明,请先使用此函数
- C 如何从构造函数中声明(错误C2065未宣布的标识符)
- 函数未在此范围内声明
- 尝试使用 std::函数(未定义的符号)声明模板化类状态时出现链接错误
- makefile 和 lex+yacc 中的错误 -> 错误:"noyywrap"未声明(在此函数中首次使用)
- 我们如何有证据表明,声明虚拟函数的类是2个字节,其中一个不超过一个未声明,而在子类中
- 函数参数中未声明和未定义的标识符
- 在此范围错误中未声明函数错误
- 类 'MainWindow' 中未声明任何成员函数
- 错误C2509:成员函数未在派生类中声明
- C++成员函数未声明错误时(当它看起来是错误时)
- 函数未声明(首先使用此函数)
- 函数未声明简单程序
- 无法调用 VBO 实现所需的函数...未声明错误