以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- thostmduserapi 的冲突问题! (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=11001) |
|||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:sutter -- 发布时间:2012/4/10 14:15:21 -- thostmduserapi 的冲突问题! 自定义开发了DLL公式,并且有自定义的thostmduserapi.dll和thosttraderapi.dll ,放在FmlDLL文件夹下; 金字塔在调用dll公式时,始终加载了自带根目录下的thosttraderapi文件,那么怎么执行我自己的FmlDLL里面的thosttraderapi文件呢 |
|||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:Leon -- 发布时间:2012/4/10 14:32:54 -- 楼主参考 金字塔的安装目录有FmlDevelope.zip文件,里面有金字塔编写DLL的技术规范 使用时必须将动态库文件放置在与*.stk文档相同目录下使用. [此贴子已经被作者于2012-4-10 14:36:43编辑过]
|
|||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:sutter -- 发布时间:2012/4/10 14:46:31 -- DLL没问题的,单独可以运行,DLL里面又调用了thosttraderapi.dll,这个自定义的DLL和金字塔根目录thosttraderapi.dll有冲突,始终调用不到自己的thosttraderapi.dll |
|||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:Leon -- 发布时间:2012/4/10 14:55:23 -- 命名不能一样,你自定义的thosttraderapi.dll 和已有的是不是冲突了?把自定义的链接库重命名试试吧 [此贴子已经被作者于2012-4-10 15:05:02编辑过]
|
|||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:sutter -- 发布时间:2012/4/10 15:46:52 -- 是的,就是你说的意思,同名,因为我自己DLL公式根据信号走自己的CTP通道(thosttraderapi.dll和thostmduserapi.dll), 但金字塔也用了这2个文件,导致冲突,DLL公式始终都调用了金字塔的CTP DLL接口,导致我自己的交易模块异常, 第三方的动态链接库,名字改不了,还有其他办法么 |
|||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:王锋 -- 发布时间:2012/4/10 15:50:40 -- (thosttraderapi.dll和thostmduserapi.dll 放到FmlDLL也不行?那样的话应该跟冲突无关,是你的DLL模块编写问题 |
|||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:sutter -- 发布时间:2012/4/10 15:55:22 -- 编写没有问题的,单独从FMLDLL文件执行也不会有问题,从交易师DLL接口调用也没有问题, 只要从金字塔启动就会异常, 而且windows日志:
说明我的DLL调用thosttraderapi.dll里面的功能时,金字塔由于查找DLL顺序的原因,找到他根目录的DLL文件了,FMLDLL里面的thosttraderapi.dll没有机会执行 |
|||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:王锋 -- 发布时间:2012/4/10 16:17:12 -- 试试 在调用你的DLL中的函数前,调用 SetCurrentDirectory 这个API函数,指定默认的工作路径看看 |
|||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:sutter -- 发布时间:2012/4/10 16:51:11 -- 已经试过的, SetDllDirectory(L"E:\\股软\\Weisoft Stock\\FmlDLL"); //无效
刚用Procmon.exe分析了金字塔的启动过程,在第一个登陆界面就载入了thostmduserapi.dll和thosttraderapi.dll,然后DLL执行我的界面时,并没有重新载入这2个文体, 说明DLL先从当前进程里面查找,如果进程已经载过,后面的就不再加载,始终执行了不了自己的thosttraderapi.dll, 看来这还不好解决, 最好金字塔可以配置是否使用CTP功能,如果为否,就不去加载这文件 |
|||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:王锋 -- 发布时间:2012/4/10 16:53:36 -- 你得thosttraderapi.dll是什么版本的,我们看看后面更新到跟你相同的版本 |