将DLL代码从Borland C ++ Builder 6移植到Microsoft Visual C

时间:2011-02-24 14:28:53

标签: c++ visual-studio-2008 visual-studio-2010 closures c++builder-6

我需要帮助一些旧的C ++代码来自/用于在Borland c ++ builder 6中编写的DLL,我必须在VS2008或VS2010中重新编译它。由于我们所有的测试都表明MSVC优化代码的速度提高了4倍以上(速度提升),因此我们的软件具有实时性要求。 我已经用std或win32api函数重写和/或包装了很多VCL代码,主要是AnsiString,事件,线程,列表的类,所以大多数代码编译并运行良好......

但是我遇到了一个障碍,我不知道如何单独解决,所以我求你寻求任何帮助。

我不知道如何实现可以模拟__closure关键字的内容。我知道这是borland c ++ builder特定的关键字,并允许程序员使用通用指针来指向成员函数。我知道在本机c ++中这是不可能的,因为指向成员函数的指针不是常规函数指针,而是member_function_pointer=function_pointer-this之类的东西。因此__closure必须保存thismember_function_pointer。但我不知道如何实现这一目标。也不会怎么可能,因为我们的代码中的类不相互认识,这将违反面向对象编程原则的所有原则。

对不起我生锈的英语:S 感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:1)

std::bindboost::bind应该可以解决问题。另请参阅问题“std::bind a member function to an object pointer”和“boost::bind and class member function”。您可能还想查看boost::functionstd::function