2015-08-12 3 views
0

Я новичок в C++, я создаю приложение в Visual Studio 2010 с помощью SDK, имеющего сторонние DLL. Я хочу, чтобы иметь возможность запускать эту программу на других компьютерах, поэтому я посмотрел на вопрос this, чтобы убедиться, что я включил их правильно (в частности, ответ Лаллаллана). Затем я создаю программу в режиме выпуска, и она компилируется отлично. Проблема в том, что когда я пытаюсь запустить .exe в папке с образцом, программа не запускается. Не уверены, являются ли эти данные релевантными, но мой проект использует MFC в статической библиотеке и многопоточной (MT) библиотеке времени выполнения. Инкрементное соединение не включено.Visual Studio C++ 3rd Party dll предотвращает запуск .exe

Я подозреваю, что это имеет какое-то отношение бытия DLL в том же месте, что и .exe, потому что, если я перееду один из них из папки выпуска образца, я получаю эту ошибку:

enter image description here

Я также заметил это в API SDK. Я не уверен, если это Релевент или нет:

"The eBUS SDK is provided as DLLs. Static libraries are not offered at this point. Even though DLLs are provided, it is still necessary to link your application against link libraries of the DLLs."

Исполняемого было прекрасно работать до того, он только начал отвод, когда я попытался поставить библиотеки DLL в том же месте, что и ех, пытался сделать он работает на других компьютерах и когда я переустановил SDK. Кто-нибудь есть идеи о том, что это может быть? За последние 2 дня я занимаюсь своей головой. Любая помощь будет принята с благодарностью.

+1

Знаете ли вы, что SDK пытается передать типы ЭЛТ по границе DLL? Если это так, вам нужно динамически связать MFC и CRT. –

+0

Извините, что я не очень разбираюсь в программировании, но вы могли бы немного разобраться? Как мне динамически связываться с MFC и CRT? – oodan123

+0

@BillyIneal Также, когда я удаляю dll с того же места, что и .exe, программа работает нормально. Но это не очень полезно, если мне нужно перенести dll на другой компьютер, чтобы программа запускалась. – oodan123

ответ

0

Я решил, что у нового компьютера было 2 версии PvBuffer, у одного был метод GetAcquiredSize, а у другого - нет. Программа выполняла версию, которая этого не делала, и пыталась найти метод, которого там не было. Спасибо за вашу помощь!

Смежные вопросы