Почему я получаю Точка входа в процедуру CreateVssBackupComponentsInternal не может быть расположена в библиотеке динамической компоновки VSSAPI.DLL.

Привет всем, позвольте мне сначала рассказать вам предысторию: я работаю над проектом, который построен с vs2005 на winxp sp3 с windows sdk 7.0 и, самое главное, с исправлением, которое предназначено для работы с win xp (sp 0) - > окна 7.

Часть проекта запрашивает снимки и немного поиграет с ними. В моей среде разработки все в порядке, в Windows 7 все в порядке (вроде нормально, но не в этом суть).

На чистых машинах xp (sp3 и 2) я получаю: «Точка входа в процедуру CreateVssBackupComponentsInternal не может быть расположена в библиотеке динамической компоновки VSSAPI.DLL», когда я запускаю приложение - даже до того, как я перейду к той части кода, которая связана к VSSAPI ...

1) как он может поднять сообщение до того, как я перейду к вызову? 2) Есть ли у кого-нибудь идеи, почему не работает?

Благодарность


person ManicQin    schedule 21.07.2010    source источник


Ответы (1)


1) Потому что DLL загружается при запуске вашего приложения, а не при первой необходимости. Посмотрите отложенную загрузку или системный вызов LoadLibrary, если вы хотите загрузить его позже или даже условно.

2) Не знаю, но раньше кто-то задавал тот же вопрос: Почему мой запросчик службы теневого копирования томов не работает: не удается найти CreateVssBackupComponentsInternal

person torhu    schedule 21.07.2010
comment
Спасибо за ваш ответ, я видел этот пост и подумал, что, поскольку мой вызов функции не был вызван, моя проблема в другом. Я надеюсь, что мой следующий вопрос не будет слишком сложным, динамически вызвать CreateBackupVssComponent легко, но остальные функции (которые являются функциями-членами классов, которые являются членами семейства vss) будут немного сложнее. Это вызов функции CreateBackupVssComponent, который заставляет приложение проверять, существует ли оно в DLL? Другими словами, если я вообще не буду вызывать функцию, будет ли она искать ее в DLL? - person ManicQin; 22.07.2010
comment
Если в вашем приложении есть вызов функции, DLL будет загружена при запуске, и функция должна быть в ней. Вы не можете сделать это условно без использования LoadLibrary и GetProcAddress. - person torhu; 23.07.2010
comment
ммм ... Спасибо. Попробую загрузить их динамически. Я обнаружил, что некоторые библиотеки в моем проекте выдают сообщение WINVER not defined. По умолчанию 0x0502 (Windows Server 2003), вероятно, проблема. Благодарность! - person ManicQin; 23.07.2010
comment
Эй, все еще не повезло. Я смотрю в файл VSbackup.h, и определяется функция CreateVSSBackComponenets: inline HRESULT CreateVssBackupComponents (__out IVssBackupComponents ** ppBackup) {return CreateVssBackupComponentsInternal (ppBackup); } Неважно, какая версия ОС. - person ManicQin; 27.07.2010