在Visual Studio上为.NET构建64位QUICKFIX(.NET C++ DLL包装器)

3
我度过了一个不眠之夜,试图构建QUICKFIX以获得quickfix_net.dll和quickfix_net_messages.dll的64位版本。
我的C#框架是64位的,而常规提供的QUICKFIX dll是32位的,所以我别无选择(将我的应用程序切换回32位不是一个选项)。
我期望VS_10解决方案可以立即构建(可怜的天真小兔子...),但我有许多未找到的库错误(无法打开源文件“xxxxxx.h”)对于许多#include“xxxxxx.h”的语句。我在两个项目源中都遇到了这种行为。我感到困惑,因为我更多地是一个.net人,我自己没有解决这个问题。

这个项目的源代码可以从这里下载,我最感兴趣的64位分支在这里
如果你们中的一些人能够打开quickfix_vs10.sln并进行干净的编译,我将非常感激,因为这样我就可以在公司地下室睡上至少几个小时,然后回到工作中。

编辑:

详细错误:

  • 我有许多无法识别的#include "quickfix/foo" > 我必须从整个解决方案中删除所有"quickfix/"前缀
  • 'FIX':不是类或命名空间名称(特别是在FieldMap.h中)
  • 缺少类型说明符 - 假定为int。注意:C++不支持默认-int -'QuickFix::FieldNotFound __gc &':无法通过值或引用抛出或捕获托管对象

我有成百上千个这样的错误... :(

编辑:高效答案

如果您需要一个真正的 .Net FIX 引擎,那么最好选择 VERSAFIX 或者 QUICKFIX/N,两者都是本地的 .Net 并且开源,因此可以编译为 x64 dlls(或者如果您喜欢,也可以编译为 x86)。

  • QUICKFIX/N 刚刚推出,非常有前途。可惜它在这篇文章发布几个月后才推出 :(
  • 至于 VERSAFIX,我们公司已经使用了6个月,到目前为止我们还比较满意。 (项目发起人 Russ Curry 在技术上非常可靠和响应迅速。)
3个回答

2
你应该查看 QuickFIX/n,这是一个专门为.NET构建的FIX库(不需要使用未经管理的C ++包装)。 QuickFIX/n保留了所有优秀的QuickFIX约定。

哦天啊,我要泪奔了。这正是我等了那么久的东西!!!遗憾的是,在发布时还没有这个可用的选项,所以我们使用了Assimilate的开源.Net VERSAFIX(请参见编辑)。 - Mehdi LAMRANI
QuickFIX/n非常有前途。然而,去年我在尝试时遇到了太多的问题,因此最终转向了QuickFIX .net包装器。 - Andrew Rimmer

1

我几天前也需要64位版本的quickfix,以下是我如何做到并且没有出现任何错误或问题将其转换为64位的方法。解压缩一个新的存档实例,用VS打开它。 然后进入整个解决方案的属性,选择配置属性。然后点击“配置管理器”按钮,在“活动解决方案平台”的下拉菜单中选择“新建”。现在从第一个下拉菜单中选择x64,从第二个下拉菜单中选择“复制设置来自:Mixed Platforms”。完成这些步骤后,重新构建解决方案,就完成了。

希望这对大家有所帮助。祝你们有美好的一天。


你是在说 quickfix 网站上提供的“quickfix-1.13.3.zip”源代码压缩包吗?实际上,这正是我所做的。我之前尝试过,但遇到了很多困难。一开始我无法编译它:你使用的是哪个版本的 VS?解决方案是否能够顺利编译?它是否找到了缺失的 .h 库文件?能否请您提供更多细节信息? - Mehdi LAMRANI
我使用VS2010,如果你按照我输入的步骤操作,构建过程中就不会出现任何问题。如果你仍然有问题,在这里写给我,我愿意发送DLL文件来帮助你。 - Jordan
自从发布这篇文章以来,我已经使用了Versafix(请参见编辑)。现在Quickfix/N也可用。无论如何,还是谢谢。 - Mehdi LAMRANI

0

头文件(.h)错误是由于无法找到包含文件夹而引起的。如果将该文件夹添加到项目查找头文件的位置列表中,它应该可以正常构建。我也遇到过这个问题,但作为C++开发人员,我立刻知道了原因,我承认如果我对C++及其怪癖不是那么熟悉,我可能需要一段时间来解决这个问题。


这似乎比那更加复杂:在将包含目录添加到VC++目录后,我得到了1000多个构建错误。我只是疯了。由于项目源已经正式提交,我认为它是稳定的,但我可能错过了某些东西。 - Mehdi LAMRANI
现在有哪些错误?还有其他目录可能需要添加;有时VS无法与QF项目文件很好地配合。 - MD-Tech
我无法确定是否有要添加到包含目录中的文件夹,或者问题出在其他地方。 - Mehdi LAMRANI
我刚开始也遇到了那些错误,我需要想一想我是如何修复它们的。 - MD-Tech
我认为如果你将所有带有.h或.cpp文件的文件夹添加到项目中,它应该可以构建。同时确保构建顺序正确并设置依赖关系。 - MD-Tech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接