Я думаю, вы все перепутали.То, что он называется «статическим» временем выполнения, означает, что код для стандартных библиотек C и C ++ статически связан с вашим приложением.Как правило, это никогда не налагает никаких ограничений на то, что может делать ваше приложение.
Все стандартные классы библиотек, такие как ifstream
и функции, такие как printf
, будут использоваться независимо от того, находится ли их код внутри вашего EXE-файла встатическая среда выполнения или вне вашего EXE в динамической среде выполнения.Все функции Win32, такие как LoadLibrary
и GetProcAddress
, всегда находятся за пределами вашего приложения в обычных DLL-библиотеках Windows (например, Kernel32.dll
), поэтому они, безусловно, не зависят от вашего выбора времени выполнения.
I 'Я бы сказал, что ваша настоящая проблема заключается в попытке вызвать методы C ++, используя GetProcAddress
.Этот Win32 API предназначен только для динамического вызова функций Си.Первая проблема, с которой вы столкнетесь, заключается в том, что вы не сможете найти имена методов из-за искажения имен C ++ .У вас также могут быть проблемы с размещением объектов.Моя интуиция говорит мне, что было бы почти невозможно заставить работать правильно.
Вот три предлагаемых альтернативы вместо прямого вызова методов C ++ с использованием GetProcAddress
:
- Оберните ваш C ++методы в функциях C.
- Используйте C ++ Framework, например COM или Qt plugins , для настройки динамических интерфейсов DLL.
- Используйте другую платформу, например .NET или Java;тот, который имеет полную поддержку объектно-ориентированного отражения и динамического вызова.