自定义开发了DLL公式,并且有自定义的thostmduserapi.dll和thosttraderapi.dll ,放在FmlDLL文件夹下;
金字塔在调用dll公式时,始终加载了自带根目录下的thosttraderapi文件,那么怎么执行我自己的FmlDLL里面的thosttraderapi文件呢
楼主参考 金字塔的安装目录有FmlDevelope.zip文件,里面有金字塔编写DLL的技术规范
使用时必须将动态库文件放置在与*.stk文档相同目录下使用.
DLL没问题的,单独可以运行,DLL里面又调用了thosttraderapi.dll,这个自定义的DLL和金字塔根目录thosttraderapi.dll有冲突,始终调用不到自己的thosttraderapi.dll
是的,就是你说的意思,同名,因为我自己DLL公式根据信号走自己的CTP通道(thosttraderapi.dll和thostmduserapi.dll), 但金字塔也用了这2个文件,导致冲突,DLL公式始终都调用了金字塔的CTP DLL接口,导致我自己的交易模块异常,
第三方的动态链接库,名字改不了,还有其他办法么
编写没有问题的,单独从FMLDLL文件执行也不会有问题,从交易师DLL接口调用也没有问题, 只要从金字塔启动就会异常, 而且windows日志:
WinStock.exe |
2.8.5.0 |
4f7eb27d |
thosttraderapi.dll |
0.0.0.0 |
4cf8b64a |
c0000409 |
0002d365 |
1414 |
01cd16e8336b4797 |
E:\股软\Weisoft Stock\WinStock.exe |
E:\股软\Weisoft Stock\thosttraderapi.dll |
83ee3ddc-82db-11e1-ba2b-00242cb976d1 |
说明我的DLL调用thosttraderapi.dll里面的功能时,金字塔由于查找DLL顺序的原因,找到他根目录的DLL文件了,FMLDLL里面的thosttraderapi.dll没有机会执行
已经试过的,
SetDllDirectory(L"E:\股软\Weisoft Stock\FmlDLL"); //无效
刚用Procmon.exe分析了金字塔的启动过程,在第一个登陆界面就载入了thostmduserapi.dll和thosttraderapi.dll,然后DLL执行我的界面时,并没有重新载入这2个文体, 说明DLL先从当前进程里面查找,如果进程已经载过,后面的就不再加载,始终执行了不了自己的thosttraderapi.dll, 看来这还不好解决, 最好金字塔可以配置是否使用CTP功能,如果为否,就不去加载这文件