mirror of
https://github.com/opencv/opencv.git
synced 2024-11-24 03:00:14 +08:00
Support building shared libraries on WINCE.
This commit is contained in:
parent
4dadf17bd9
commit
03fe1cb7fc
@ -18,11 +18,17 @@ namespace cv {
|
|||||||
extern __declspec(dllimport) bool __termination; // Details: #12750
|
extern __declspec(dllimport) bool __termination; // Details: #12750
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C"
|
#ifdef _WIN32_WCE
|
||||||
BOOL WINAPI DllMain(HINSTANCE, DWORD fdwReason, LPVOID lpReserved);
|
#define DLL_MAIN_ARG0 HANDLE
|
||||||
|
#else
|
||||||
|
#define DLL_MAIN_ARG0 HINSTANCE
|
||||||
|
#endif
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
BOOL WINAPI DllMain(HINSTANCE, DWORD fdwReason, LPVOID lpReserved)
|
BOOL WINAPI DllMain(DLL_MAIN_ARG0, DWORD fdwReason, LPVOID lpReserved);
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
BOOL WINAPI DllMain(DLL_MAIN_ARG0, DWORD fdwReason, LPVOID lpReserved)
|
||||||
{
|
{
|
||||||
if (fdwReason == DLL_THREAD_DETACH || fdwReason == DLL_PROCESS_DETACH)
|
if (fdwReason == DLL_THREAD_DETACH || fdwReason == DLL_PROCESS_DETACH)
|
||||||
{
|
{
|
||||||
|
@ -139,7 +139,7 @@ const char dir_separators[] = "/";
|
|||||||
|
|
||||||
static bool isDir(const cv::String& path, DIR* dir)
|
static bool isDir(const cv::String& path, DIR* dir)
|
||||||
{
|
{
|
||||||
#if defined _WIN32 || defined WINCE
|
#if defined _WIN32 || defined _WIN32_WCE
|
||||||
DWORD attributes;
|
DWORD attributes;
|
||||||
BOOL status = TRUE;
|
BOOL status = TRUE;
|
||||||
if (dir)
|
if (dir)
|
||||||
@ -147,7 +147,7 @@ static bool isDir(const cv::String& path, DIR* dir)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
WIN32_FILE_ATTRIBUTE_DATA all_attrs;
|
WIN32_FILE_ATTRIBUTE_DATA all_attrs;
|
||||||
#ifdef WINRT
|
#if defined WINRT || defined _WIN32_WCE
|
||||||
wchar_t wpath[MAX_PATH];
|
wchar_t wpath[MAX_PATH];
|
||||||
size_t copied = mbstowcs(wpath, path.c_str(), MAX_PATH);
|
size_t copied = mbstowcs(wpath, path.c_str(), MAX_PATH);
|
||||||
CV_Assert((copied != MAX_PATH) && (copied != (size_t)-1));
|
CV_Assert((copied != MAX_PATH) && (copied != (size_t)-1));
|
||||||
|
@ -115,13 +115,20 @@ static cv::String getModuleLocation(const void* addr)
|
|||||||
#endif
|
#endif
|
||||||
if (m)
|
if (m)
|
||||||
{
|
{
|
||||||
char path[MAX_PATH];
|
TCHAR path[MAX_PATH];
|
||||||
const size_t path_size = sizeof(path)/sizeof(*path);
|
const size_t path_size = sizeof(path) / sizeof(*path);
|
||||||
size_t sz = GetModuleFileNameA(m, path, path_size); // no unicode support
|
size_t sz = GetModuleFileName(m, path, path_size);
|
||||||
if (sz > 0 && sz < path_size)
|
if (sz > 0 && sz < path_size)
|
||||||
{
|
{
|
||||||
path[sz] = '\0';
|
path[sz] = TCHAR('\0');
|
||||||
|
#ifdef _UNICODE
|
||||||
|
char char_path[MAX_PATH];
|
||||||
|
size_t copied = wcstombs(char_path, path, MAX_PATH);
|
||||||
|
CV_Assert((copied != MAX_PATH) && (copied != (size_t)-1));
|
||||||
|
return cv::String(char_path);
|
||||||
|
#else
|
||||||
return cv::String(path);
|
return cv::String(path);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
|
@ -3,10 +3,10 @@ if(WINCE)
|
|||||||
# Try_Compile succeed and therefore also C/C++ ABI Detetection work
|
# Try_Compile succeed and therefore also C/C++ ABI Detetection work
|
||||||
# https://gitlab.kitware.com/cmake/cmake/blob/master/Modules/Platform/Windows-
|
# https://gitlab.kitware.com/cmake/cmake/blob/master/Modules/Platform/Windows-
|
||||||
# MSVC.cmake
|
# MSVC.cmake
|
||||||
set(CMAKE_C_STANDARD_LIBRARIES_INIT "coredll.lib")
|
set(CMAKE_C_STANDARD_LIBRARIES_INIT "coredll.lib oldnames.lib")
|
||||||
set(CMAKE_CXX_STANDARD_LIBRARIES_INIT ${CMAKE_C_STANDARD_LIBRARIES_INIT})
|
set(CMAKE_CXX_STANDARD_LIBRARIES_INIT ${CMAKE_C_STANDARD_LIBRARIES_INIT})
|
||||||
foreach(ID EXE SHARED MODULE)
|
foreach(ID EXE SHARED MODULE)
|
||||||
string(APPEND CMAKE_${ID}_LINKER_FLAGS_INIT
|
string(APPEND CMAKE_${ID}_LINKER_FLAGS_INIT
|
||||||
" /NODEFAULTLIB:libc.lib /NODEFAULTLIB:oldnames.lib")
|
" /NODEFAULTLIB:libc.lib")
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
@ -57,6 +57,14 @@ For headless WEC2013, this configuration may not be limited to but is known to w
|
|||||||
-DWITH_TIFF=OFF `
|
-DWITH_TIFF=OFF `
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Configuring to build as shared
|
||||||
|
Building OpenCV as shared libraries is as easy as appending
|
||||||
|
```
|
||||||
|
-DBUILD_SHARED_LIBS=ON `
|
||||||
|
-DBUILD_ZLIB=ON
|
||||||
|
```
|
||||||
|
to the build configuration.
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
You are required to build using Unicode:
|
You are required to build using Unicode:
|
||||||
`cmake --build . -- /p:CharacterSet=Unicode`
|
`cmake --build . -- /p:CharacterSet=Unicode`
|
||||||
|
Loading…
Reference in New Issue
Block a user