Без большого объявления подробностей, надо было сделать две вещи:
Возможно конечно я не правильно что-то делал(не extern "C", например), но если я компилировал и dll и использующую его программу в IDE любой из 2008, 2010 и 2012 Visual Studio всё работало прекрасно. Если же компиляция производилась, с помощью cl, то приложение вылетало. Два дня я запускал приложение и компиляцию на различных компьютерах и в итоге выяснил интересную вещь: если компилировать в IDE всё работает, если компилировать из-под консоли на Windows 7 работает только в случае, если используется VS 2012, в случае 2008 и 2010 - приложение вылетает. На Windows XP с точностью наоборот - на 2008 и 2010 (а даже 2005) работает, на 2012 - вылетает. Как только компилировать не пробовал. В итоге отчаялся и решил поэкспериментировать с самой прогой и изменил портотип на:
И всё заработало! И в IDE и из-под консоли. Я не знаю из-за чего возникли эти странности, но вот так вот оно получилось.
Будьте аккуратнее с тем, что экспортируете.
- Использовать dll
- Компилировать с помощью bat-файла
extern "C" __declspec(dllexport) unsigned int doit(string& dir)
Возможно конечно я не правильно что-то делал(не extern "C", например), но если я компилировал и dll и использующую его программу в IDE любой из 2008, 2010 и 2012 Visual Studio всё работало прекрасно. Если же компиляция производилась, с помощью cl, то приложение вылетало. Два дня я запускал приложение и компиляцию на различных компьютерах и в итоге выяснил интересную вещь: если компилировать в IDE всё работает, если компилировать из-под консоли на Windows 7 работает только в случае, если используется VS 2012, в случае 2008 и 2010 - приложение вылетает. На Windows XP с точностью наоборот - на 2008 и 2010 (а даже 2005) работает, на 2012 - вылетает. Как только компилировать не пробовал. В итоге отчаялся и решил поэкспериментировать с самой прогой и изменил портотип на:
extern "C" __declspec(dllexport) unsigned int doit(char* windir)
И всё заработало! И в IDE и из-под консоли. Я не знаю из-за чего возникли эти странности, но вот так вот оно получилось.
Будьте аккуратнее с тем, что экспортируете.
Комментариев нет:
Отправить комментарий