Я обновил проект C ++ 6 до C ++ Builder 10.
Когда я загружаю DLL с LoadLibrary, выбрасываю это исключение.
HINSTANCE hInst;
hInst = LoadLibrary( "MyLibrary.dll" );
Проект XXXX.exe поднял класс исключения EOutOfResources с сообщением
«Вариант или безопасный массив заблокирован».
Я не брался за выражение «Вариант или безопасный массив заблокирован».
Я пытался загрузить DLL в новом пустом приложении. Загружается. Нет никаких проблем.
Но не могу загрузить DLL в существующий проект.
Как определить источник проблемы?
Посмотрите, поможет ли это:
Миграция старых приложений C ++ Builder в C ++ Builder 10, Сиэтл
Специально эти два предложения:
Любые библиотеки, созданные с помощью более старой версии C ++ Builder
нужно будет перекомпилировать для использования C ++ Builder 10
Сиэтлский проект.
а также
Не позволяйте C ++ Builder 10 Seattle преобразовывать ваш старый проект Builder.
Скопируйте ваши файлы в новую папку, создайте новый проект и добавьте свой
исходные файлы к нему
Причина проблемы;
Я сравнил два файла .cbproj с блокнотом ++
Я создал DLL с C ++ Builder 10
<PropertyGroup>
<ProjectGuid>{E3FB4C71-C382-46EC-A17D-5C25890309CD}</ProjectGuid>
<ProjectVersion>18.0</ProjectVersion>
<FrameworkType>VCL</FrameworkType>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>1</TargetedPlatforms>
<AppType>Library</AppType>
</PropertyGroup>
Я обновил DLL C ++ Builder 6 до 10
<PropertyGroup>
<ProjectGuid>{923C6CCC-2F12-4C36-B9B1-C765AE96A7A2}</ProjectGuid>
<ProjectType>CppDynamicLibrary</ProjectType>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<FrameworkType>None</FrameworkType>
<ProjectVersion>18.0</ProjectVersion>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>1</TargetedPlatforms>
<AppType>Library</AppType>
</PropertyGroup>
Разница в FrameworkType.
Я заменил None To VCL.
DLL загружена.