# HG changeset patch # User Sebastien Jodogne # Date 1374143762 -7200 # Node ID 1b8a1c43893e8997fc691742b2f93611352a339c # Parent d87febb5f183a91ebc6394776c9650415c511800 compilation of the dll 32/64 diff -r d87febb5f183 -r 1b8a1c43893e OrthancCppClient/Package/CMakeLists.txt --- a/OrthancCppClient/Package/CMakeLists.txt Thu Jul 18 12:11:33 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -# nm -C -D --defined-only libOrthancCppClient.so - - -cmake_minimum_required(VERSION 2.8) - -project(OrthancCppClientTest) - -include_directories(${CMAKE_SOURCE_DIR}/Laaw) - -set(STATIC_BUILD ON) -set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/../..) - -include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake) -include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake) -include(${ORTHANC_ROOT}/Resources/CMake/LibCurlConfiguration.cmake) -include(${ORTHANC_ROOT}/Resources/CMake/LibPngConfiguration.cmake) -include(${ORTHANC_ROOT}/Resources/CMake/BoostConfiguration.cmake) -include(${ORTHANC_ROOT}/Resources/CMake/ZlibConfiguration.cmake) - -if (${CMAKE_COMPILER_IS_GNUCXX}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pedantic -Wno-implicit-function-declaration") # --std=c99 makes libcurl not to compile - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wno-long-long -Wno-variadic-macros") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") -elseif (${MSVC}) - add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) -endif() - -add_library(OrthancCppClient SHARED - SharedLibrary.cpp - ${THIRD_PARTY_SOURCES} - ${ORTHANC_ROOT}/Core/OrthancException.cpp - ${ORTHANC_ROOT}/Core/Enumerations.cpp - ${ORTHANC_ROOT}/Core/Toolbox.cpp - ${ORTHANC_ROOT}/Core/HttpClient.cpp - ${ORTHANC_ROOT}/Core/MultiThreading/ArrayFilledByThreads.cpp - ${ORTHANC_ROOT}/Core/MultiThreading/ThreadedCommandProcessor.cpp - ${ORTHANC_ROOT}/Core/MultiThreading/SharedMessageQueue.cpp - ${ORTHANC_ROOT}/Core/FileFormats/PngReader.cpp - ${ORTHANC_ROOT}/OrthancCppClient/OrthancConnection.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Series.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Study.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Instance.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Patient.cpp - ${ORTHANC_ROOT}/Resources/sha1/sha1.cpp - ${ORTHANC_ROOT}/Resources/md5/md5.c - ${ORTHANC_ROOT}/Resources/base64/base64.cpp - ) - -if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/Laaw/VersionScript.map") - target_link_libraries(OrthancCppClient pthread) -else() - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++") - target_link_libraries(OrthancCppClient ws2_32) -endif() diff -r d87febb5f183 -r 1b8a1c43893e OrthancCppClient/Package/OrthancCppClient.cmake --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OrthancCppClient/Package/OrthancCppClient.cmake Thu Jul 18 12:36:02 2013 +0200 @@ -0,0 +1,60 @@ +# nm -C -D --defined-only libOrthancCppClient.so + +include_directories(${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw) + +set(STATIC_BUILD ON) +include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/LibCurlConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/LibPngConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/BoostConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/ZlibConfiguration.cmake) + +if (${CMAKE_COMPILER_IS_GNUCXX}) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pedantic -Wno-implicit-function-declaration") # --std=c99 makes libcurl not to compile + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wno-long-long -Wno-variadic-macros") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") +elseif (${MSVC}) + add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) +endif() + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + if (${CMAKE_SIZEOF_VOID_P} EQUAL 4) + set(WINDOWS_DEF ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows32.def) + elseif (${CMAKE_SIZEOF_VOID_P} EQUAL 8) + set(WINDOWS_DEF ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows64.def) + else() + message(FATAL_ERROR "Support your platform here") + endif() +endif() + +add_library(OrthancCppClient SHARED + ${THIRD_PARTY_SOURCES} + ${ORTHANC_ROOT}/Core/OrthancException.cpp + ${ORTHANC_ROOT}/Core/Enumerations.cpp + ${ORTHANC_ROOT}/Core/Toolbox.cpp + ${ORTHANC_ROOT}/Core/HttpClient.cpp + ${ORTHANC_ROOT}/Core/MultiThreading/ArrayFilledByThreads.cpp + ${ORTHANC_ROOT}/Core/MultiThreading/ThreadedCommandProcessor.cpp + ${ORTHANC_ROOT}/Core/MultiThreading/SharedMessageQueue.cpp + ${ORTHANC_ROOT}/Core/FileFormats/PngReader.cpp + ${ORTHANC_ROOT}/OrthancCppClient/OrthancConnection.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Series.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Study.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Instance.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Patient.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Package/SharedLibrary.cpp + ${ORTHANC_ROOT}/Resources/sha1/sha1.cpp + ${ORTHANC_ROOT}/Resources/md5/md5.c + ${ORTHANC_ROOT}/Resources/base64/base64.cpp + ${WINDOWS_DEF} + ) + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script=${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw/VersionScript.map") + target_link_libraries(OrthancCppClient pthread) +else() + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++") + target_link_libraries(OrthancCppClient ws2_32) +endif() diff -r d87febb5f183 -r 1b8a1c43893e OrthancCppClient/Package/Test.sh --- a/OrthancCppClient/Package/Test.sh Thu Jul 18 12:11:33 2013 +0200 +++ b/OrthancCppClient/Package/Test.sh Thu Jul 18 12:36:02 2013 +0200 @@ -6,4 +6,6 @@ ${LAAW_ROOT}/Parser/Build/LaawParser.exe Build/CodeModelRaw.json ../OrthancConnection.h -I`pwd`/../../s/jsoncpp-src-0.6.0-rc2/include -fms-extensions && \ python ${LAAW_ROOT}/Generators/CodeModelPostProcessing.py Build/CodeModel.json Build/CodeModelRaw.json Product.json && \ python ${LAAW_ROOT}/Generators/GenerateWrapperCpp.py Build/OrthancClient.h Build/CodeModel.json Product.json ConfigurationCpp.json && \ - python ${LAAW_ROOT}/Generators/GenerateExternC.py Build/ExternC.cpp Build/CodeModel.json Product.json + python ${LAAW_ROOT}/Generators/GenerateExternC.py Build/ExternC.cpp Build/CodeModel.json Product.json && \ + python ${LAAW_ROOT}/Generators/GenerateWindows32Def.py Build/Windows32.def Build/CodeModel.json && \ + python ${LAAW_ROOT}/Generators/GenerateWindows64Def.py Build/Windows64.def Build/CodeModel.json diff -r d87febb5f183 -r 1b8a1c43893e OrthancCppClient/Package/Test/Basic/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OrthancCppClient/Package/Test/Basic/CMakeLists.txt Thu Jul 18 12:36:02 2013 +0200 @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 2.8) + +project(OrthancCppClientTest) + +set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/../../../..) +include(../../OrthancCppClient.cmake) + +add_executable(Test main.cpp) + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + target_link_libraries(Test dl) +else() + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") +endif() diff -r d87febb5f183 -r 1b8a1c43893e OrthancCppClient/Package/Test/Basic/main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OrthancCppClient/Package/Test/Basic/main.cpp Thu Jul 18 12:36:02 2013 +0200 @@ -0,0 +1,75 @@ +/** + * Orthanc - A Lightweight, RESTful DICOM Store + * Copyright (C) 2012-2013 Medical Physics Department, CHU of Liege, + * Belgium + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + **/ + + +#include + +#include "../../Build/OrthancClient.h" + +int main() +{ + try + { +#ifdef _WIN32 + OrthancClient::Initialize("libOrthancCppClient.dll"); +#else + OrthancClient::Initialize("libOrthancCppClient.so"); +#endif + + // Display the content of the local Orthanc instance + OrthancClient::OrthancConnection orthanc("http://localhost:8042"); + + for (unsigned int i = 0; i < orthanc.GetPatientCount(); i++) + { + OrthancClient::Patient patient = orthanc.GetPatient(i); + std::cout << "Patient: " << patient.GetId() << std::endl; + + for (unsigned int j = 0; j < patient.GetStudyCount(); j++) + { + OrthancClient::Study study = patient.GetStudy(j); + std::cout << " Study: " << study.GetId() << std::endl; + + for (unsigned int k = 0; k < study.GetSeriesCount(); k++) + { + OrthancClient::Series series = study.GetSeries(k); + std::cout << " Series: " << series.GetId() << std::endl; + + for (unsigned int l = 0; l < series.GetInstanceCount(); l++) + { + std::cout << " Instance: " << series.GetInstance(l).GetId() << std::endl; + } + } + } + } + + return 0; + } + catch (OrthancClient::OrthancClientException e) + { + std::cerr << "EXCEPTION: [" << e.What() << "]" << std::endl; + return -1; + } +} diff -r d87febb5f183 -r 1b8a1c43893e OrthancCppClient/Package/Test/Vtk/CMakeLists.txt --- a/OrthancCppClient/Package/Test/Vtk/CMakeLists.txt Thu Jul 18 12:11:33 2013 +0200 +++ b/OrthancCppClient/Package/Test/Vtk/CMakeLists.txt Thu Jul 18 12:36:02 2013 +0200 @@ -2,6 +2,9 @@ project(OrthancCppClientTest) +set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/../../../..) +include(../../OrthancCppClient.cmake) + find_package(VTK REQUIRED) include(${VTK_USE_FILE}) diff -r d87febb5f183 -r 1b8a1c43893e OrthancCppClient/Package/Test/Vtk/main.cpp --- a/OrthancCppClient/Package/Test/Vtk/main.cpp Thu Jul 18 12:11:33 2013 +0200 +++ b/OrthancCppClient/Package/Test/Vtk/main.cpp Thu Jul 18 12:36:02 2013 +0200 @@ -139,8 +139,6 @@ // Try and find a 3D image inside the local store OrthancClient::OrthancConnection orthanc("http://localhost:8042"); - printf(">> %d\n", orthanc.GetPatientCount()); - for (unsigned int i = 0; i < orthanc.GetPatientCount(); i++) { OrthancClient::Patient patient = orthanc.GetPatient(i);