Как мне отложить загрузку .dll в C ++ - CLI ( .net)?

Я пытаюсь отложить загрузку зависимого. dll для приложения C ++ / CLI, чтобы я мог проверить их существование и предупредить пользователя вместо того, чтобы просто сбой.

Я попытался добавить библиотеки dll в MyProject-> Properties-> ConfigurationProperties-> Linker-> Input- > Задержка загруженных DLL ... но это просто предупреждает меня, что он не ссылается на них:

5> ССЫЛКА: предупреждение LNK4199: /DELAYLOAD:Util.dll игнорируется; не найден импорт из Util.dll

. Если я удалю .dll и запустил приложение, оно выйдет из строя и захочет отправить в Microsoft информацию об отсутствующей .dll, так что похоже, что он все еще пытается загрузить все модули при запуске и имеет

К вашему сведению, мой запуск приложения выглядит примерно так:

using namespace System;
using namespace System::Collections::ObjectModel;
using namespace Microsoft::Win32;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    try
    {
        // Enabling Windows XP visual effects before any controls are created
        Application::EnableVisualStyles();
        Application::SetCompatibleTextRenderingDefault(false); 

        // First make sure we have all the .dlls we need
        ArrayList^ missingDlls = gcnew ArrayList();
        Assembly^ assembly = Assembly::GetEntryAssembly();
        array<System::Reflection::AssemblyName^>^ referencedAssemblies = assembly->GetReferencedAssemblies();
        for each(System::Reflection::AssemblyName^ referencedAssemblyName in referencedAssemblies)
        {
            try
            {
                Assembly^ a = assembly->Load(referencedAssemblyName);
                if( a == nullptr )
                {
                    missingDlls->Add(referencedAssemblyName->Name);
                }
            }
            catch(System::Exception^ e)
            {
                MessageBox::Show("Error loading "+referencedAssemblyName->Name);
            }
        }

        ...
5
задан Ken Bloom 21 January 2011 в 18:30
поделиться