VS Studio dll 编译 debug

动态输入法 windows  版一直以来有一个 bug ,就是在多个操作系统中安装报错,迄今已有4年多。今天又对这个问题进行了排查,基本解决了,有一些要点记录如下。 

1。关于安装报错(模块加载失败 请确保该二进制文件在指定的路径中。。。)的解决办法:编译设置,应使用静态MFC。参考:模块加载失败 请确保该二进制文件在指定的路径中 找不到指定的模块_p312011150的博客-CSDN博客_regsvr32模块加载失败请确保二进制

项目配置属性--->常规--->MFC的使用 修改为在静态库中使用MFC

2。 关于使用静态MFC,Win32编译报错(error LNK2019: 无法解析的外部符号)的解决办法:编译设置,添加 gdi32.lib 。参考:

Visual Studio添加lib到链接依赖项的几种方法-蒲公英云

在项目上点击右键->【属性】->【配置属性】->【链接器】->【输入】->【附加依赖项】,点击编辑,添加相应库文件。

3。关于编译属性的其他要点:

3。1。配置和平台的选取状态,并不是编译的状态,也就是不管「平台」选win32还是x64,生成时都可以生成win32和x64。

3。2。常规-》输出目录,目标文件名,都可自定义,可把 win32,x64的输出设为同一个目录,但用文件名区分,加 _x86  _64。

奇怪的是,C++ 中指定的 jvm 路径是  xxx/jvm/x64,而安装包中准备的 jvm 则包括 x86 和 x64两种,而代码怎么去选择正确的路径,竟然完全找不到。经试验:

20180814 22:08编译的x86文件:

1。如果在 x86CPU 32bit Win7上,设计的路径是安装正常的,但如果把 jvm/x64 改名为 jvm/x86,则启动报错:

xxx\jvm\x86\jre\bin\server\jvm.dll 没有被指定在 Windows上运行,或者它包含错误。

2。如果在 x64CPU 32bit Win8.1上,安装报错(没有使用静态 MFC导致)所以该问题没有暴露。

可能是20180814,在22:08专门编译了一个x86路径的 x86版,22:10专门编译了一个 x64路径的 x64版。而在最终的代码中,路径写为 x64,使过程无法追溯。

20221209 23:43 编译的文件(代码路径为 x64,一次编译了 x86和 x64两个版本):

在x86CPU 32bit Win7上、 x64CPU 32bit Win8.1上,设计的路径安装报错:

xxx\jvm\x64\jre\bin\server\jvm.dll 没有被指定在 Windows上运行,或者它包含错误。

但如果把 jvm/x86 强制改名为 jvm/x86,则安装正常。

Debug 要点:

1。在记事本中启用动态输入法时,勿必切换成其他输入法再退出,否则可能引起 explorer.exe 崩溃。

2。在 cmd 中运行 bat,省去每次启用管理权限。

3。如果 dll 被进程占用,从任务管理器进入资源监视器,CPU tab,查找句柄 dynatyper,找到后杀进程。

4。UniCode 下CString 转 char*,利用WideCharToMultiByte进行转换,中文乱码的解决方案 - junyuz - 博客园

解决了一个长久的问题。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值