1. 程式人生 > >VS2015編譯openjpeg(32/64位)

VS2015編譯openjpeg(32/64位)

上一篇部落格《mingw(gcc)編譯openjpeg》講了如何用gcc編譯openjpeg,但我目前只會在64位平臺下生成64位目的碼,如果需要在64位平臺生成32位目的碼怎麼辦?我還沒有找到不修改CMakeList.txt的情況下在Windows 64位平臺用gcc生成32位程式碼的辦法(待研究),因為我的除錯環境還是喜歡用VS2015所以我決定還是用VS2015再把openjpeg編譯一遍,而且可以編譯32和64位程式碼,方法比較笨,但總算有效,以後再研究更好的辦法。
下面分別說明在win7 x64平臺下編譯32位和64位程式碼的過程
下載

原始碼下載:https://github.com/uclouvain/openjpeg/archive/version.2.1.zip
編譯環境

作者使用的作業系統平臺是win7 x64, 編譯器是目前最新的vs2015,cmake版本是3.1.0,準備好以上環境就可以開始程式碼編譯了。

先將原始碼包解壓到本地硬碟
D:\os.package\cpp\openjpeg\openjpeg-version.2.1
建立build目錄openjpeg-version.2.1.prj:

    D:\os.package\cpp\openjpeg>rmdir openjpeg-version.2.1.prj /s/q
    D:\os.package\cpp\openjpeg>mkdir openjpeg-version.2.1.prj
    D:\os.package\cpp\openjpeg>cd openjpeg-version.2.1.prj
    D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj>

win 7 x64下編譯32位openjpeg

安裝好VS2015後在命令列下執行set顯示環境變數,會有如下圖紅圈所示的VS140COMNTOOLS變數

這裡寫圖片描述

然後在命令列執行

    D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj>”%VS140COMNTOOLS%vsvars32.bat”
    來設定VC的命令列編譯環境。

然後執行cmake來生成makefile檔案

    D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj>cmake -G “NMake Makefiles” -
    DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=j:/openjpeg-windows-vc-x86 -DCMAKE
    _BUILD_TYPE=RELEASE ..\openjpeg-version.2.1
    – The C compiler identification is MSVC 19.0.23026.0
    – Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio
    14.0/VC/bin/cl.exe
    – Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio
    14.0/VC/bin/cl.exe – works
    – Detecting C compiler ABI info
    – Detecting C compiler ABI info - done
    – Check if the system is big endian
    – Searching 16 bit integer
    – Looking for sys/types.h
    – Looking for sys/types.h - found
    – Looking for stdint.h
    – Looking for stdint.h - found
    – Looking for stddef.h
    – Looking for stddef.h - found
    – Check size of unsigned short
    – Check size of unsigned short - done
    – Using unsigned short
    – Check if the system is big endian - little endian
    – Looking for string.h
    – Looking for string.h - found
    – Looking for memory.h
    – Looking for memory.h - found
    – Looking for stdlib.h
    – Looking for stdlib.h - found
    – Looking for stdio.h
    – Looking for stdio.h - found
    – Looking for math.h
    – Looking for math.h - found
    – Looking for float.h
    – Looking for float.h - found
    – Looking for time.h
    – Looking for time.h - found
    – Looking for stdarg.h
    – Looking for stdarg.h - found
    – Looking for ctype.h
    – Looking for ctype.h - found
    – Looking for assert.h
    – Looking for assert.h - found
    – Looking for stdint.h
    – Looking for stdint.h - found
    – Looking for inttypes.h
    – Looking for inttypes.h - found
    – Looking for strings.h
    – Looking for strings.h - not found
    – Looking for sys/stat.h
    – Looking for sys/stat.h - found
    – Looking for unistd.h
    – Looking for unistd.h - not found
    – Checking for 64-bit off_t
    – Checking for 64-bit off_t - not present
    – Checking for fseeko/ftello
    – Checking for fseeko/ftello - not found
    – Large File support - not found
    – Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
    – Z lib not found, activate BUILD_THIRDPARTY if you want build it (necessary to build libPNG)
    – Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)
    – TIFF lib not found, activate BUILD_THIRDPARTY if you want build it
    – Could NOT find LCMS2 (missing: LCMS2_LIBRARY LCMS2_INCLUDE_DIR)
    – Could NOT find LCMS (missing: LCMS_LIBRARY LCMS_INCLUDE_DIR)
    – LCMS2 or LCMS lib not found, activate BUILD_THIRDPARTY if you want build it
    – Configuring done
    – Generating done
    – Build files have been written to: D:/os.package/cpp/openjpeg/openjpeg-version.2.1.prj

在上面的執行cmake建立makefile時,定義了幾個引數,含義如下:
-G “NMake Makefiles”
生成NMake 格式的Makefiles ,nmake是msvc的命令列編譯工具
-DBUILD_SHARED_LIBS=OFF
指定建立靜態連結庫.lib,預設是ON,生成dll

    openjpeg提供的CMakeList.txt不能同時建立靜態庫和動態庫,所以你既想要靜態庫,又想到動態庫的時候,就得修改這個引數,編譯兩次。
    當生成動態庫的時候,還可以參加引數 -DCMAKE_GNUtoMS=ON 生成MSVC格式的匯入庫(import library .lib檔案)。這樣MSVC就可以直接使用GCC編譯的動態庫了。參見我之前的部落格《cmake:讓mingw(gcc)生成MSVC可用的dll(.lib)》

-DCMAKE_BUILD_TYPE=RELEASE
就是生成RELEASE,這個引數即使不定義,預設也是生成 RELEASE版本

CMAKE_INSTALL_PREFIX=j:/openjpeg-windows-vc-x86
這個引數指定在執行make install時的安裝路徑。如果不指定預設是安裝到”C:/Program Files (x86)/OPENJPEG”。

然後執行nmake

    D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj>nmake

Microsoft (R) 程式維護實用工具 14.00.23026.0 版
版權所有 (C) Microsoft Corporation。 保留所有權利。

Scanning dependencies of target openjp2
[ 2%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/bio.c.obj
bio.c
[ 5%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/cio.c.obj
cio.c
[ 8%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/dwt.c.obj
dwt.c
[ 11%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/event.c.obj
event.c
[ 14%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/image.c.obj
image.c
[ 17%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/invert.c.obj
invert.c
[ 20%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/j2k.c.obj
j2k.c
[ 22%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/jp2.c.obj
jp2.c
D:\os.package\cpp\openjpeg\openjpeg-version.2.1\src\lib\openjp2\jp2.c(872): warn
ing C4819: 該檔案包含不能在當前內碼表(936)中表示的字元。請將該檔案儲存為 Unicode
格式以防止資料丟失
[ 25%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/mct.c.obj
mct.c
[ 28%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/mqc.c.obj
mqc.c
[ 31%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/openjpeg.c.obj
openjpeg.c
[ 34%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/opj_clock.c.obj
opj_clock.c
[ 37%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/pi.c.obj
pi.c
[ 40%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/raw.c.obj
raw.c
[ 42%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/t1.c.obj
t1.c
[ 45%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/t2.c.obj
t2.c
[ 48%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/tcd.c.obj
tcd.c
[ 51%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/tgt.c.obj
tgt.c
[ 54%] Building C object src/lib/openjp2/CMakeFiles/openjp2.dir/function_list.c.obj
function_list.c
Linking C static library ……\bin\openjp2.lib
[ 54%] Built target openjp2
Scanning dependencies of target t1_generate_luts
[ 57%] Building C object src/lib/openjp2/CMakeFiles/t1_generate_luts.dir/t1_generate_luts.c.obj
t1_generate_luts.c
Linking C executable ……\bin\t1_generate_luts.exe
[ 57%] Built target t1_generate_luts
Scanning dependencies of target opj_compress
[ 60%] Building C object src/bin/jp2/CMakeFiles/opj_compress.dir/opj_compress.c.obj
opj_compress.c
[ 62%] Building C object src/bin/jp2/CMakeFiles/opj_compress.dir/convert.c.obj
convert.c
[ 65%] Building C object src/bin/jp2/CMakeFiles/opj_compress.dir/index.c.obj
index.c
[ 68%] Building C object src/bin/jp2/CMakeFiles/opj_compress.dir/__/common/color.c.obj
color.c
[ 71%] Building C object src/bin/jp2/CMakeFiles/opj_compress.dir/__/common/opj_getopt.c.obj
opj_getopt.c
Linking C executable ……\bin\opj_compress.exe
[ 71%] Built target opj_compress
Scanning dependencies of target opj_decompress
[ 74%] Building C object src/bin/jp2/CMakeFiles/opj_decompress.dir/opj_decompress.c.obj
opj_decompress.c
[ 77%] Building C object src/bin/jp2/CMakeFiles/opj_decompress.dir/convert.c.obj
convert.c
[ 80%] Building C object src/bin/jp2/CMakeFiles/opj_decompress.dir/index.c.obj
index.c
[ 82%] Building C object src/bin/jp2/CMakeFiles/opj_decompress.dir/__/common/color.c.obj
color.c
[ 85%] Building C object src/bin/jp2/CMakeFiles/opj_decompress.dir/__/common/opj
_getopt.c.obj
opj_getopt.c
Linking C executable ……\bin\opj_decompress.exe
[ 85%] Built target opj_decompress
Scanning dependencies of target opj_dump
[ 88%] Building C object src/bin/jp2/CMakeFiles/opj_dump.dir/opj_dump.c.obj
opj_dump.c
[ 91%] Building C object src/bin/jp2/CMakeFiles/opj_dump.dir/convert.c.obj
convert.c
[ 94%] Building C object src/bin/jp2/CMakeFiles/opj_dump.dir/index.c.obj
index.c
[ 97%] Building C object src/bin/jp2/CMakeFiles/opj_dump.dir/__/common/color.c.obj
color.c
[100%] Building C object src/bin/jp2/CMakeFiles/opj_dump.dir/__/common/opj_getopt.c.obj
opj_getopt.c
Linking C executable ……\bin\opj_dump.exe
[100%] Built target opj_dump

然後執行nmake install

然後執行nmake install ,就會將生成的二進位制檔案自動複製到前面CMAKE_INSTALL_PREFIX指定的J:\openjpeg-windows-vc-x86資料夾下,分為bin\include\lib三個子目錄。

    D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj>nmake install
    Microsoft (R) 程式維護實用工具 14.00.23026.0 版
    版權所有 (C) Microsoft Corporation。 保留所有權利。
    [ 54%] Built target openjp2
    [ 57%] Built target t1_generate_luts
    [ 71%] Built target opj_compress
    [ 85%] Built target opj_decompress
    [100%] Built target opj_dump
    Install the project…
    – Install configuration: “RELEASE”
    – Installing: j:/openjpeg-windows-vc-x86/lib/openjpeg-2.1/OpenJPEGTargets.cmake
    – Installing: j:/openjpeg-windows-vc-x86/lib/openjpeg-2.1/OpenJPEGTargets-release.cmake
    – Installing: j:/openjpeg-windows-vc-x86/lib/openjpeg-2.1/OpenJPEGConfig.cmake
    – Installing: j:/openjpeg-windows-vc-x86/bin/msvcp140.dll
    – Installing: j:/openjpeg-windows-vc-x86/include/openjpeg-2.1/opj_config.h
    – Installing: j:/openjpeg-windows-vc-x86/lib/openjp2.lib
    – Installing: j:/openjpeg-windows-vc-x86/include/openjpeg-2.1/openjpeg.h
    – Installing: j:/openjpeg-windows-vc-x86/include/openjpeg-2.1/opj_stdint.h
    – Installing: j:/openjpeg-windows-vc-x86/bin/opj_decompress.exe
    – Installing: j:/openjpeg-windows-vc-x86/bin/opj_compress.exe
    – Installing: j:/openjpeg-windows-vc-x86/bin/opj_dump.exe

win 7 x64下編譯64位openjpeg

上面的步驟執行下來,nmake生成的預設就是x86(32位)目的碼,因為對cmake nmake瞭解不夠,現在還不知道如何在這個過程中指定生成64程式碼,所以生成64位程式碼我用了另外一個過程。

    不要忘記了,在編譯之前一定也要像上面的步驟一樣,先執行”%VS140COMNTOOLS%vsvars32.bat”來設定VC的命令列編譯環境哦

清理掉上面過程的檔案,重新建立build資料夾(openjpeg-version.2.1.prj)

    D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj>cd ..
    D:\os.package\cpp\openjpeg>rmdir openjpeg-version.2.1.prj /s/q
    D:\os.package\cpp\openjpeg>mkdir openjpeg-version.2.1.prj
    D:\os.package\cpp\openjpeg>cd openjpeg-version.2.1.prj
    D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj>

執行cmake生成VS2015 Win64格式的sln工程檔案OPENJPEG.sln

    D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj>cmake -G “Visual Studio 14 2
    015 Win64” -DBUILD_SHARED_LIBS=OFF ..\openjpeg-version.2.1
    – The C compiler identification is MSVC 19.0.23026.0
    – Check for working C compiler using: Visual Studio 14 2015 Win64
    – Check for working C compiler using: Visual Studio 14 2015 Win64 – works
    – Detecting C compiler ABI info
    – Detecting C compiler ABI info - done
    – Check if the system is big endian
    – Searching 16 bit integer
    – Looking for sys/types.h
    – Looking for sys/types.h - found
    – Looking for stdint.h
    – Looking for stdint.h - found
    – Looking for stddef.h
    – Looking for stddef.h - found
    – Check size of unsigned short
    – Check size of unsigned short - done
    – Using unsigned short
    – Check if the system is big endian - little endian
    – Looking for string.h
    – Looking for string.h - found
    – Looking for memory.h
    – Looking for memory.h - found
    – Looking for stdlib.h
    – Looking for stdlib.h - found
    – Looking for stdio.h
    – Looking for stdio.h - found
    – Looking for math.h
    – Looking for math.h - found
    – Looking for float.h
    – Looking for float.h - found
    – Looking for time.h
    – Looking for time.h - found
    – Looking for stdarg.h
    – Looking for stdarg.h - found
    – Looking for ctype.h
    – Looking for ctype.h - found
    – Looking for assert.h
    – Looking for assert.h - found
    – Looking for stdint.h
    – Looking for stdint.h - found
    – Looking for inttypes.h
    – Looking for inttypes.h - found
    – Looking for strings.h
    – Looking for strings.h - not found
    – Looking for sys/stat.h
    – Looking for sys/stat.h - found
    – Looking for unistd.h
    – Looking for unistd.h - not found
    – Checking for 64-bit off_t
    – Checking for 64-bit off_t - not present
    – Checking for fseeko/ftello
    – Checking for fseeko/ftello - not found
    – Large File support - not found
    – Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
    – Z lib not found, activate BUILD_THIRDPARTY if you want build it (necessary to
    build libPNG)
    – Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)
    – TIFF lib not found, activate BUILD_THIRDPARTY if you want build it
    – Could NOT find LCMS2 (missing: LCMS2_LIBRARY LCMS2_INCLUDE_DIR)
    – Could NOT find LCMS (missing: LCMS_LIBRARY LCMS_INCLUDE_DIR)
    – LCMS2 or LCMS lib not found, activate BUILD_THIRDPARTY if you want build it
    – Configuring done
    – Generating done
    – Build files have been written to: D:/os.package/cpp/openjpeg/openjpeg-version.2.1.prj
    D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj>

命令列呼叫VS2015開發環境devenv編譯上面生成的工程檔案OPENJPEG.sln,指定編譯解決方案”Release|x64”

    D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj>devenv OPENJPEG.sln /build ”
    Release|x64”
    Microsoft Visual Studio 2015 14.0.23107.0 版。
    版權所有 (C) Microsoft Corp。保留所有權利。
    1>—— 已啟動生成: 專案: ZERO_CHECK, 配置: Release x64 ——
    1> Checking Build System
    1> CMake does not need to re-run because D:/os.package/cpp/openjpeg/openjpeg-version.2.1.prj/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because D:/os.package/cpp/openjpeg/openjpeg-version.2.1.prj/src/lib/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because D:/os.package/cpp/openjpeg/openjpeg-version.2.1.prj/src/lib/openjp2/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because D:/os.package/cpp/openjpeg/openjpeg-version.2.1.prj/thirdparty/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because D:/os.package/cpp/openjpeg/openjpeg-version.2.1.prj/src/bin/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because D:/os.package/cpp/openjpeg/openjpeg-version.2.1.prj/src/bin/common/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because D:/os.package/cpp/openjpeg/openjpeg-ve
    rsion.2.1.prj/src/bin/jp2/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because D:/os.package/cpp/openjpeg/openjpeg-version.2.1.prj/src/bin/wx/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because D:/os.package/cpp/openjpeg/openjpeg-version.2.1.prj/wrapping/CMakeFiles/generate.stamp is up-to-date.
    2>—— 已啟動生成: 專案: openjp2, 配置: Release x64 ——
    3>—— 已啟動生成: 專案: t1_generate_luts, 配置: Release x64 ——
    2> Building Custom Rule D:/os.package/cpp/openjpeg/openjpeg-version.2.1/src/lib
    /openjp2/CMakeLists.txt
    2> CMake does not need to re-run because D:\os.package\cpp\openjpeg\openjpeg-ve
    rsion.2.1.prj\src\lib\openjp2\CMakeFiles\generate.stamp is up-to-date.
    2> bio.c
    2> cio.c
    2> dwt.c
    2> event.c
    2> image.c
    3> Building Custom Rule D:/os.package/cpp/openjpeg/openjpeg-version.2.1/src/lib
    /openjp2/CMakeLists.txt
    2> invert.c
    3> CMake does not need to re-run because D:\os.package\cpp\openjpeg\openjpeg-ve
    rsion.2.1.prj\src\lib\openjp2\CMakeFiles\generate.stamp is up-to-date.
    2> j2k.c
    2> jp2.c
    3> t1_generate_luts.c
    2>D:\os.package\cpp\openjpeg\openjpeg-version.2.1\src\lib\openjp2\jp2.c(872): wa
    rning C4819: 該檔案包含不能在當前內碼表(936)中表示的字元。請將該檔案儲存為 Unico
    de 格式以防止資料丟失
    2> mct.c
    2> mqc.c
    2> openjpeg.c
    3> t1_generate_luts.vcxproj -> D:\os.package\cpp\openjpeg\openjpeg-version.2.1.
    prj\bin\Release\t1_generate_luts.exe
    2> opj_clock.c
    2> pi.c
    2> raw.c
    2> t1.c
    2> t2.c
    2> tcd.c
    2> tgt.c
    2> function_list.c
    2> 正在生成程式碼…
    2> openjp2.vcxproj -> D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj\bin\R
    elease\openjp2.lib
    4>—— 已啟動生成: 專案: opj_compress, 配置: Release x64 ——
    5>—— 已啟動生成: 專案: opj_decompress, 配置: Release x64 ——
    6>—— 已啟動生成: 專案: opj_dump, 配置: Release x64 ——
    5> Building Custom Rule D:/os.package/cpp/openjpeg/openjpeg-version.2.1/src/bin
    /jp2/CMakeLists.txt
    4> Building Custom Rule D:/os.package/cpp/openjpeg/openjpeg-version.2.1/src/bin
    /jp2/CMakeLists.txt
    5> CMake does not need to re-run because D:\os.package\cpp\openjpeg\openjpeg-ve
    rsion.2.1.prj\src\bin\jp2\CMakeFiles\generate.stamp is up-to-date.
    4> CMake does not need to re-run because D:\os.package\cpp\openjpeg\openjpeg-ve
    rsion.2.1.prj\src\bin\jp2\CMakeFiles\generate.stamp is up-to-date.
    5> opj_decompress.c
    4> opj_compress.c
    6> Building Custom Rule D:/os.package/cpp/openjpeg/openjpeg-version.2.1/src/bin
    /jp2/CMakeLists.txt
    6> CMake does not need to re-run because D:\os.package\cpp\openjpeg\openjpeg-ve
    rsion.2.1.prj\src\bin\jp2\CMakeFiles\generate.stamp is up-to-date.
    5> convert.c
    5> index.c
    4> convert.c
    6> opj_dump.c
    5> color.c
    4> index.c
    5> opj_getopt.c
    4> color.c
    5> 正在生成程式碼…
    4> opj_getopt.c
    4> 正在生成程式碼…
    6> convert.c
    6> index.c
    6> color.c
    6> opj_getopt.c
    6> 正在生成程式碼…
    5> opj_decompress.vcxproj -> D:\os.package\cpp\openjpeg\openjpeg-version.2.1.pr
    j\bin\Release\opj_decompress.exe
    4> opj_compress.vcxproj -> D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj\
    bin\Release\opj_compress.exe
    6> opj_dump.vcxproj -> D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj\bin\
    Release\opj_dump.exe
    7>—— 已啟動生成: 專案: ALL_BUILD, 配置: Release x64 ——
    7> Building Custom Rule D:/os.package/cpp/openjpeg/openjpeg-version.2.1/CMakeLi
    sts.txt
    7> CMake does not need to re-run because D:\os.package\cpp\openjpeg\openjpeg-ve
    rsion.2.1.prj\CMakeFiles\generate.stamp is up-to-date.
    8>—— 已跳過生成: 專案: INSTALL, 配置: Release x64 ——
    8>沒有為此解決方案配置選中要生成的專案
    9>—— 已跳過生成: 專案: PACKAGE, 配置: Release x64 ——
    9>沒有為此解決方案配置選中要生成的專案
    ========== 生成: 成功 7 個,失敗 0 個,最新 0 個,跳過 2 個 ==========
    D:\os.package\cpp\openjpeg\openjpeg-version.2.1.prj>

編譯結束,所有的目標檔案都在openjpeg-version.2.1.prj/bin/Release下。使用devenv編譯sln工程沒有install過程,你得手工把目標檔案複製到你需要的位置。
這裡寫圖片描述

在呼叫cmake生成OPEN.sln時如果 BUILD_SHARED_LIBS設為ON,就會生成openjp2.dll和匯入庫(import library)openjp2.lib
這裡寫圖片描述

說話,我覺得編譯32位和64位目的碼要用不同的辦法,還是挺麻煩的,對於cmake交叉編譯,目前還沒有完全搞明白,如果哪位朋友有辦法,不吝賜教啊。