SheepSpeech Ответов: 1

Как отладить библиотеку DLL расширения MFC?


Привет,

Я создаю приложение с использованием C++ и MFC. Мое приложение загружает несколько DLL-файлов расширения MFC из своей папки "Плагины" во время выполнения, и пользователь может выбрать, какой из них он хочет запустить в списке.
Однако, если кто-то хочет сделать DLL расширения MFC для моего приложения и иметь только исполняемый файл (а не исходный код), как этот человек может отладить свою DLL расширения MFC?

Что я уже пробовал:

Я попытался следовать этой процедуре:
In Solution Explorer, select the DLL project.
From the View menu, choose Property Pages.
In the <Project> Property Pages dialog box, in the Configuration drop-down list box, choose Debug.
Open the Configuration Properties folder and select the Debugging category.
In the Command box, click the drop down arrow and choose Browse from the list to browse for the application.
Enter any necessary program arguments in the Command Arguments box.


от веб-сайт microsoft Я также добавил свой файл. dll в папку "Плагины" моего приложения.
Но это не сработало, и мое приложение не смогло загрузить ни одного плагина из своей папки.

1 Ответов

Рейтинг:
0

Rick York

Вы должны предоставить им отладочную версию вашего исполняемого файла, потому что MFC не может смешивать модули режима отладки и выпуска. Однако вам не нужно предоставлять им свой исходный код, и я не уверен, Нужно ли вам предоставлять им файл символов, файл .pdb. Они должны сделать отладочную сборку и указать команду, Аргументы и рабочий каталог в разделе отладки свойств конфигурации, после чего они могут установить точки останова в методах интерфейса и отладить свою библиотеку.

Вы можете проверить это сами, создав небольшую скелетную библиотеку со всеми необходимыми методами интерфейса, и посмотреть, работает ли она. Это должно быть довольно просто. Вам придется поэкспериментировать, чтобы увидеть, что нужно библиотеке расширений от вашего приложения с точки зрения файлов.pdb и тому подобного.


SheepSpeech

Привет,

Я думаю, что это то, что я сделал (я что-то забыл? Может быть, это файлы. pdb, но я не был явно заблокирован без него).
Проблема больше в следующем: мое приложение загружает плагины из своего каталога "плагины", а затем пользователь может выбрать один из них и запустить его. Поэтому только прикрепление моего расширения к приложению не позволяет мне видеть плагин в моем приложении. Более того, делая это таким образом, мое приложение не загружает ни одного плагина (обычно оно загружает все плагины, доступные в его каталоге "Плагины").

Rick York

Я признаю, что это может быть сложно, но я сам делал именно это в прошлом, поэтому я знаю, что это возможно. Отлаживать библиотеки DLL можно двумя способами. Один из них-установить точку останова в вашем коде, где вы вызываете функции из библиотеки DLL, а затем переходите в код, который она вызывает. Второй - установить точку останова внутри функций библиотеки DLL, а затем запустить программу до тех пор, пока не будет достигнута одна из этих точек останова. В любом случае это довольно просто. Попробуйте один или оба и посмотрите, что получится.

SheepSpeech

Вы пробовали это сделать без исходного кода основного приложения? Спасибо.

Rick York

Насколько я помню, нет. - А ты? Это быстро и легко сделать. Я описал, как раньше.

SheepSpeech

Вот что я понимаю:

"Один из них устанавливает точку останова в вашем коде, где вы вызываете функции из библиотеки DLL, а затем входите в код, который она вызывает." Для этого вам нужен исходный код основного приложения.

"Второе-это установить точку останова внутри функции в DLL и затем запустить программу, Пока один из тех, точки останова не ударил".Вы должны быть в состоянии запустить debugguer из DLL, для этого вы должны приложить DLL в приложение, но как мне объяснили приложение не запустить его в этом случае, потому что это не в его директорию плагинов. Если вы тоже поставите свое .dll в своем каталоге плагинов и выбрать, чтобы запустить его из приложения, точки останова игнорируются.

Rick York

К сожалению, я не в состоянии написать программу для проверки этого. Однако я немного поискал и нашел несколько статей на эту тему. Я искал здесь слова "plug-in framework" и нашел довольно много статей. Я рекомендую взять один из них и проверить, что вы пытаетесь сделать, и посмотреть, что получится. Я часто нахожу, что тестирование в минимально возможной среде может быть очень полезным, поскольку оно имеет тенденцию минимизировать побочные эффекты.