Poco
Modern, powerful open source C++ class libraries for building network- and internet-based applications that run on desktop, server, mobile and embedded systems.
How to install
우선, 설치방법은 README파일을 읽어보면 된다.
불필요한 라이브러리는 아래와 같이 생략 가능하다.
또한 --help
옵션을 사용하여 확인할 수 있지만, MinGW용 설정은 아래와 같이 적용할 수 있다.
라이브러리 설치는 아래와 같이 진행하면 된다.
Troubleshooting
Not found ssl & crypto library (from MinGW)
./configure --omit=NetSSL_OpenSSL,Crypto
옵션을 사용해도 컴파일 중간에 -lssl
, -lcrypto
라이브러리를 찾을 수 없다고 출력된다. 이 경우 ./build/config/MinGW
파일의 마지막에 있는 SYSLIBS
의 값을 수정하면 된다.
Not found test (from MinGW)
make도중 testrunner.exe.exe
파일을 찾을 수 없다는 에러메시지가 출력된다. .exe
확장자가 한 번 더 붙어서 생긴 문제로, ./build/rules/exec
파일에서 아래와 같이, EXEC_
로 시작하는 변수의 $(BINEXT)
값을 제거하면 된다. 결과값은 아래와 같다.
#
# Target names
#
EXEC_RELEASE_STATIC = $(BINPATH)/static/$(target)$(OSARCH_POSTFIX)
EXEC_DEBUG_STATIC = $(BINPATH)/static/$(target)d$(OSARCH_POSTFIX)
EXEC_RELEASE_SHARED = $(BINPATH)/$(target)$(OSARCH_POSTFIX)
EXEC_DEBUG_SHARED = $(BINPATH)/$(target)d$(OSARCH_POSTFIX)
WinMain error (from MinGW)
make도중 SampleApp 프로젝트를 빌드하게 되는데, WinMain()
함수가 없다는 에러가 발생된다. 이 경우 ./Util/samples/SampleApp/src/SampleApp.cpp
파일을 확인하면 문제점을 발견할 수 있다. 하단의 POCO_APP_MAIN(SampleApp)
매크로 문제이며, 해당 매크로는 ./Util/include/Poco/Util/Application.h
파일에서 확인할 수 있다. 간단한 해결 방법은 아래와 같이 SampleApp.cpp
파일에 WinMain()
을 추가하면 된다.
// ...
// POCO_APP_MAIN(SampleApp)
int main(int argc, char** argv)
{
Poco::AutoPtr<SampleApp> pApp = new SampleApp;
try
{
pApp->init(argc, argv);
}
catch (Poco::Exception& exc)
{
pApp->logger().log(exc);
return Poco::Util::Application::EXIT_CONFIG;
}
return pApp->run();
}
// For Windows Project Entry point.
#if defined(WIN32) || defined(_WIN32)
#include <windows.h>
int APIENTRY
WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdLine, int cmdShow)
{
return main(__argc, __argv);
}
#endif
자세한 내용은 Windows Api#Undefined reference to WinMain를 참조.