Портирование кода DLL из Borland C ++ Builder 6 в Microsoft Visual C - PullRequest
2 голосов
/ 24 февраля 2011

Мне нужна помощь с некоторым старым кодом C ++ из / для DLL, который был написан на Borland C ++ Builder 6, я должен перекомпилировать его в VS2008 или VS2010.Так как все наши тесты показали, что MSVC оптимизирует код более чем в 4 раза лучше (по скорости), чем Borland Builder ... И наше программное обеспечение предъявляет требования в реальном времени.Я переписал и / или упаковал много кода VCL с функциями std или win32api, главным образом, для классов AnsiString, событий, потоков, списков, поэтому большая часть кода компилируется и работает хорошо ...

Но я пришел кбарьер, который я не знаю, как решить в одиночку, поэтому я прошу вас о любой помощи.

Я понятия не имею, как я могу реализовать что-то, что может имитировать ключевое слово __closure.Я знаю, что это ключевое слово Borland C ++, позволяющее программисту использовать общий указатель на функцию-член.Я знаю, что это невозможно в нативном c ++, так как указатель на функцию-член не является обычным указателем на функцию, а что-то вроде member_function_pointer=function_pointer-this.Так что __closure должны сохранить this и member_function_pointer.Но я не знаю, как этого добиться.Как бы это ни было возможно, поскольку классы в нашем коде не знают друг друга, и это нарушило бы все принципы хороших принципов объектно-ориентированного программирования.

Извините за мой ржавый английский: S Спасибо за вашвремя и помощь.

1 Ответ

1 голос
/ 24 февраля 2011

Либо std :: bind , либо boost :: bind должны сработать. Также смотрите вопросы " std :: bind функции-члена с указателем объекта " и " boost :: bind и функции-члена класса ". Вы также можете посмотреть boost :: function или std :: function .

...