编译CxImage 32位+64位

vc6: 直接编译 crtdll, 兼容任何项目, 不需要安装VC Runtime库: (不支持64bit)
    编译CRTDLL Unicode 项目即可
    只需要二个文件: cximagecrtu.lib, cximagecrtu.dll
    #pragma comment(lib, "cximagecrtu.lib")
    把 cximagecrtu.dll 放入可执行目录
在实际项目中,必须去除“视wchar_t为内置”选项,因为wchar_t在库中为unsigned short

----- 默认工程文件(full_vc10.sln) -----

CRT DLL 动态库(MD), 但用户必须自行安装相应的VC Runtime
用高版本VS编译vc10.sln, 编译CRTDLL即可, 目标项目必须设置为动态链接库(MD)
需要两个文件: cximagecrt.lib, cximagecrt.dll


CXImage静态库(MD), 需要VC Runtime支持
编译CXImage, 再编译CRTDLL(自动编译所有解码器库)
项目依赖 release/debug 下所有的lib, 文件非常大。
依赖库 cximage.lib, jasper.lib, jbig.lib, jpeg.lib, libdcr.lib, libpsd.lib, mng.lib, png.lib, tiff.lib zlib.lib
可用lib.exe进行合并(运行vcvars32.bar, 进入lib目录): lib.exe /out:d:\cximage_all.lib *.lib


CXImage静态库(MT, 非默认), 不需要VC Runtime支持
如果实际项目工程使用LibMT运行库,则需要编译 CXImage静态库(MT)版本:
同MD,将所有项目修改运行库为MT,再按MD的方式编译。

需要调试符号时,所有的项目指定程序数据库名称(PDB):  $(OutDir)$(ProjectName).pdb

----------------------------------------------------------


最佳编译方式: (CxImage CRT Dll with LibMT), 兼容任何项目,不需要VC Runtime支持
所有工程项目一律调整运行库为MT, Debug为MTd
编译 cximagecrtdll 项目, 使用最终文件: cximagecrt.lib, cximagecrt.dll  头文件:(cximage/*.h)
另注: 应修改所有字符集为UNICODE

如果VS版本高,提示stdint错误信息,则修改cximage/stdint.h (此文件是兼容vs1010以下版本,高版本已包含)
#pragma once
#include <stdint.h>


64位:
tiff.lib, psd.lib并不支持64位,除了“指针截断”需要处理一下,其它警告可忽略, include目录保持原状

tiff (源代码并无警告,ximage.lib有警告)
# tif_xfile.cpp // ximage源码, 改int为intptr_t
tif->tif_fd = (int)fd;  // 此时fd 为void*, thandle_t   

改 tiffiop.h
struct tiff{
    ...
    intptr_t tif_fd;    // 原为int,改为intptr_t


// (char*)cp 转为 unsigned long 截断, 此时仅判断指针的后2位,无所谓
for (; n && !isAligned(cp, long); n--){}    
#define isAligned(p,t)  ((((unsigned long)(p)) & (sizeof (t)-1)) == 0)


psd 

修改 psd_types.h, libpsd.h

指针截断,下方代码data为内存指针(malloc),强制转换为32位, 存放在一个结构里(psd_layer_record),必然会出错:
layer->layer_info_data[layer->layer_info_count] = (psd_uint)data;
为了懒我把psd_uint 定义 为 intptr_t, 32位不影响,64位为指针长度.
事实应该把psd_layer_record::layer_info_data[] 改为intptr_t, 所有引用此结构的地方都改一下类型(非常多)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值