.net - QuickFix for NET 无法识别 BeginString 或因 rasapi32.dll “丢失”而失败
问题描述
我们正在编写使用 QuickFix 5.0.SP2 的 .NET 应用程序。
有 2 个 Nuget 包可用:QuickFix.Net.NETCore.FIX50SP2和QuickFIXn.FIX5.0SP2
使用QuickFIXn.FIX5.0SP2时- 启动器在开发人员机器上工作正常,在测试机器上,但无法在生产机器上连接,出现DLLNotFoundException "Unable to load 'rasapi32.dll'",尽管 rasapi32.dll 确实存在于机器。
使用QuickFix.Net.NETCore.FIX50SP2时- 启动器在所有机器上加载并连接,但不能接受除管理消息之外的任何消息。任何 App 消息都会强制它使用“Unsupported BeginString”消息注销。
这是我尝试发送和接收的示例消息(QuoteRequest)
8=FIXT.1.1|9=0332|35=R|49=ABC|56=DEF|34=172|52=20201103-13:06:01.420|1180=xxxxxx|1181=6183|60=20201103-13:06:00.985483|131=1604393423979-735|146=1|55=EUR/USD|63=SPOT|15=EUR|54=0|38=5000000|453=4|448=ST_TEST_BU2|447=D|452=500|2376=18|448=x.abc.sales|447=D|452=11|2376=24|448=X_TEXT|447=D|452=3|2376=24|448=X_ACCOUNT2|447=D|452=24|2376=18|10=163|
启动器设置:
[SESSION]
AppDataDictionary=FIX50SP2.xml
StartTime=00:00:00
EndTime=23:59:59
BeginString=FIXT.1.1
SenderCompID=DEF
TargetCompID=ABC
HeartBtInt=30
DefaultApplVerID=FIX.5.0SP2
TransportDataDictionary=FIXT11.xml
接受者设置:
[SESSION]
AppDataDictionary=FIX50SP2.xml
StartTime=00:00:00
EndTime=23:59:59
BeginString=FIXT.1.1
SenderCompID=ABC
TargetCompID=DEF
HeartBtInt=30
DefaultApplVerID=FIX.5.0SP2
TransportDataDictionary=FIXT11.xml
解决方案
您的程序找不到rasapi32.dll
在运行时命名的 Windows 动态库(在 .Net 中称为程序集)。该文件很可能是您的程序直接链接的另一个库的依赖项。我猜是 QuickFix 库。
如果你能rasapi32.dll
在你的机器上找到某个地方,你可以将它的路径添加到 PATH 环境变量中,或者将它复制到你程序的工作目录中。最好使用 PATH 环境变量,以防此库在其自己的目录中需要其他环境变量。
或者,您可以使用一个程序调用depends
来遍历程序的库依赖关系树,它会指示您的程序需要哪个库,而这又需要哪个库rasapi32.dll
推荐阅读
- android - 在 Android Pie (API-28) 中进入活动时键盘不显示
- dotnetnuke - DNN - 500 内部服务器错误
- visual-studio-code - 使用外部 http 服务器在 vscode 中构建代码
- delphi - 从 BDE 迁移到 ADO - 数据库
- jenkins-pipeline - Jenkins 脚本化管道 - 顺序步骤
- asp.net - 如何使 Web 浏览器的 url 保持在 MVC 错误 404 中
- vba - 使用添加的变量值重命名文件夹中的所有文件而不打开
- spring - 来自 yaml 的 Spring 配置 - 结合 @ConfigurationEnabled 加载参数化文件名
- android - 虚幻引擎如何处理手机不同的屏幕分辨率?特别是用户界面
- javascript - 向有页脚的表格添加滚动条