金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2896|回复: 17

C++ DLL全局变量测试

[复制链接]

3

主题

27

帖子

27

积分

Rank: 1

等级: 新手上路

注册:
2022-4-7
曾用名:
发表于 2023-10-22 10:02 | 显示全部楼层 |阅读模式
您好, 各位技术大拿!

反复测试与的DLL debug一个全局变量赋值与使用的C++ DLL, 发现有全局变量时,DLL不能正常运行。

请教问题:
     1、这是金之塔软件有意检测后,明确禁止这类C++的正常编程方式, 是这样吗?
     2、还是软件Bug?

期待金之塔技术大拿的热心答复。

附件为本次测试的DLL代码图片,及过程图片

JZT-测试0.png
JZT-测试3.png
JZT-测试2.png
JZT-测试1.png
JZT-测试4.png
JZT-测试5.png
回复

使用道具 举报

3

主题

27

帖子

27

积分

Rank: 1

等级: 新手上路

注册:
2022-4-7
曾用名:
 楼主| 发表于 2023-10-22 11:26 | 显示全部楼层
Exception thrown at 0x773ED6C2 in WinStock.exe: Microsoft C++ exception: COleException at memory location 0x0019F860

这是什么异常处理呢? 启动VS 的DLL Debug 时, 常常出现
回复

使用道具 举报

1

主题

843

帖子

853

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2023-10-22 13:29 | 显示全部楼层
传统模式下DLL每次运行都是要重新加载的,如果你要用到全局的变量进行额外记录你需要进行对DLL进行内存驻留设置。参见下图

截图202310221328397359.png

回复

使用道具 举报

3

主题

27

帖子

27

积分

Rank: 1

等级: 新手上路

注册:
2022-4-7
曾用名:
 楼主| 发表于 2023-10-22 14:20 | 显示全部楼层
@技术015

谢谢大拿, 按您的指导设置后,现在引用dll的Pel公式可以正常运行了。

但VS DLL debug 却不能正常运行, 且不断报:

Exception thrown at 0x773ED6C2 in WinStock.exe: Microsoft C++ exception: COleException at memory location 0x001676C8.
Exception thrown at 0x773ED6C2 in WinStock.exe: Microsoft C++ exception: COleException at memory location 0x00189298.
Exception thrown at 0x773ED6C2 in WinStock.exe: Microsoft C++ exception: COleException at memory location 0x001676C8.

截图202310221420236443.png
回复

使用道具 举报

1

主题

843

帖子

853

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2023-10-22 21:18 | 显示全部楼层
报这个错误可能跟你的代码引用了某些库等等有关,我们无法给你做出协助,建议你自行通过记录txt日志的方式来逐步调试,看代码运行到那一步了,以及运行过程的状态等逐步排查问题
回复

使用道具 举报

3

主题

27

帖子

27

积分

Rank: 1

等级: 新手上路

注册:
2022-4-7
曾用名:
 楼主| 发表于 2023-10-22 23:12 | 显示全部楼层
谢谢您的回复! 不过这应该不是我的代码问题。 我们可以用贵司提供示例代码, 64位下进行测试。使用VS2019编译并DLL debug。 可以成功编译,生成的DLL可以用Dependencies检测, 见附图。

出现下列现象:

  1、64位软件加载后, PEL公式调用MYMACLOSE没有反应;
  2、通过VS2019 DLL debug 发现问题:CALCINFO* pData 中 pData->m_pfParam1为空(0000000)详见附图
  3、可以说明64位没有正确传送数据

附件为VS 2019 project 代码包, 及附图

截图202310222308053032.png

MYDLL.rar

8.57 KB, 下载次数: 1410

回复

使用道具 举报

3

主题

27

帖子

27

积分

Rank: 1

等级: 新手上路

注册:
2022-4-7
曾用名:
 楼主| 发表于 2023-10-22 23:22 | 显示全部楼层
DLL Debug图片说明没有正确传送数据, 也说明DLL可以被64位软件加载调用,但数据传送错误。

请各位大拿帮忙分析
JZT64-测试01.png
JZT64-测试02.png
回复

使用道具 举报

3

主题

27

帖子

27

积分

Rank: 1

等级: 新手上路

注册:
2022-4-7
曾用名:
 楼主| 发表于 2023-10-23 09:10 | 显示全部楼层
我对此BUG的随意猜想:如附图

截图202310230909572607.png
回复

使用道具 举报

1

主题

843

帖子

853

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2023-10-23 10:00 | 显示全部楼层
建议你用系统自带的DLL范例先跑一下看看,然后再对比范例你哪些地方做了改动
回复

使用道具 举报

3

主题

27

帖子

27

积分

Rank: 1

等级: 新手上路

注册:
2022-4-7
曾用名:
 楼主| 发表于 2023-10-23 11:00 | 显示全部楼层
@技术015 代码已上传给了您了,系统自带64位DLL范例VS2019编译后以及用vs2013编译后, PEL公式调用后都无法显示结果。因此修改了.h文件, 添加了linker export. DLL 可以调用了, 但系统传递参数错误。

请问用系统自带的64位DLL范例,需要在什么特定环境下编译生成DLL, 才可以正常调用?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 11:35 , Processed in 0.290846 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表