2013-08-21 4 views
0

Я застреваю с проблемой MFC.MFC и динамическая компоновка

Я много читал о связи, статическом и динамическом, а также различиях между ними.

Мой проект - проект с открытым исходным кодом, с примерно 2000 файлами, которые я не написал, я только что изменил проект.

Моя проблема в том, что я хочу, чтобы иметь возможность клонировать программу на другой компьютер. Первый компьютер может запустить программу, я предполагаю, что это возможно, так как VS 2008 proffesional установлен, что означает, что все DLL присутствуют. На втором компьютере программа запускается, но зависает, я предполагаю, что это означает, что она не может найти DLL или, возможно, неправильную версию.

Я пробовал статическое связывание, но так как проект содержит lof кода _AFXDLL, его невозможно скомпилировать. Я использовал depend.exe для создания отчета о зависимости, проанализировал отчет и проверил, существуют ли все файлы. На обоих компьютерах присутствуют все DLL-файлы.

Мой вопрос в том, есть ли все-таки знать, почему моя программа зависает? Установка VS на машине, похоже, сделала трюк, поэтому я предполагаю, что VS pro копирует некоторые важные файлы, о которых я не знаю. Если да, есть ли хороший способ найти эти файлы?

+0

Freez в состоянии прекратить работать или ?? И вы использовали LoadLibrary ?? я не ошибаюсь, вы имеете дело с динамическим связыванием. –

+0

Стрелка превращается в песочные часы. Я обыскал другой компьютер, и, вероятно, я не перераспределял правильную версию DLL. Найдена ссылка на которую dll перераспределяет http://msdn.microsoft.com/en-us/library/8kche8ah(v=vs.90).aspx – Pphoenix

ответ

1

Проблема решена!

Ответ был прост, CRT- и MFC-файлы имели разные версии. Чтобы убедиться, что версии всегда одинаковы, можно распространять файлы вместе с приложением. Йохен Кальмбах написал очень простой и точный урок о том, как это сделать here.

Надеюсь, этот ответ поможет кому-то еще! :)