[英]QuickFix for NET does not recognize BeginString or fails because of rasapi32.dll "missing"
We are writing .NET application for using QuickFix 5.0.SP2.我们正在编写 .NET 应用程序以使用 QuickFix 5.0.SP2。
There are 2 Nuget packages available: QuickFix.Net.NETCore.FIX50SP2 and QuickFIXn.FIX5.0SP2有 2 个 Nuget 包可用: QuickFix.Net.NETCore.FIX50SP2和QuickFIXn.FIX5.0SP2
When using QuickFIXn.FIX5.0SP2 - the initiator works fine on a developer machine, on the test machine but fails to connect on the production machine with DLLNotFoundException "Unable to load 'rasapi32.dll'" , despite rasapi32.dll does exists on the machine.使用QuickFIXn.FIX5.0SP2时 - 启动器在开发人员机器上工作正常,在测试机器上,但无法在生产机器上连接,出现DLLNotFoundException "Unable to load 'rasapi32.dll'" ,尽管 rasapi32.dll 确实存在于机器。
When using QuickFix.Net.NETCore.FIX50SP2 - the initiator loads and connects on all machines, but cannot accept any message except admin messages.使用QuickFix.Net.NETCore.FIX50SP2时 - 启动器在所有机器上加载并连接,但不能接受除管理消息之外的任何消息。 Any App messages force it to logout with 'Unsupported BeginString' message.
任何 App 消息都会强制它使用“Unsupported BeginString”消息注销。
Here is an example message I try to send and receive (QuoteRequest)这是我尝试发送和接收的示例消息(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|
Initiator settings:启动器设置:
[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
Acceptor settings:接受者设置:
[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
Your program can not find the Windows dynamic library (in.Net called an assembly) named rasapi32.dll
at run-time.您的程序在运行时找不到名为
rasapi32.dll
的 Windows 动态库(在.Net 中称为程序集)。 This file is most likely a dependency of another library your program is linking directly with.该文件很可能是您的程序直接链接的另一个库的依赖项。 I would guess the QuickFix library.
我猜是 QuickFix 库。
If you can find rasapi32.dll
somewhere on your machine you can either add its path to the PATH environment variable or copy it to the working directory of your program.如果您可以在计算机上的某个位置找到
rasapi32.dll
,则可以将其路径添加到 PATH 环境变量或将其复制到程序的工作目录。 Using the PATH environment variable is preferable in case this library requires other ones in its own directory.最好使用 PATH 环境变量,以防此库在其自己的目录中需要其他环境变量。
Alternatively you can use a program called depends
to walk the tree of library dependencies of your program, and it will indicate which library your program requires, that in turn requires rasapi32.dll
或者,您可以使用一个名为
depends
的程序来遍历程序的库依赖关系树,它将指示您的程序需要哪个库,而这又需要rasapi32.dll
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.