首页 > 解决方案 > QuickFix for NET 无法识别 BeginString 或因 rasapi32.dll “丢失”而失败

问题描述

我们正在编写使用 QuickFix 5.0.SP2 的 .NET 应用程序。

有 2 个 Nuget 包可用:QuickFix.Net.NETCore.FIX50SP2QuickFIXn.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

标签: .netquickfixquickfixn

解决方案


您的程序找不到rasapi32.dll在运行时命名的 Windows 动态库(在 .Net 中称为程序集)。该文件很可能是您的程序直接链接的另一个库的依赖项。我猜是 QuickFix 库。

如果你能rasapi32.dll在你的机器上找到某个地方,你可以将它的路径添加到 PATH 环境变量中,或者将它复制到你程序的工作目录中。最好使用 PATH 环境变量,以防此库在其自己的目录中需要其他环境变量。

或者,您可以使用一个程序调用depends来遍历程序的库依赖关系树,它会指示您的程序需要哪个库,而这又需要哪个库rasapi32.dll


推荐阅读