Вопросы OpenCV — как заставить мою программу с OpenCV работать на другом компьютере?


как заставить мою программу с OpenCV работать на другом компьютере (Windows)?

Нет ничего удивительного, что программа с использованием OpenCV не запустилась на другом компьютере 🙂 Причиной является в том, что вместе с программой нужно также переносить dll-файлы библиотеки OpenCV.
Они находятся в директории
OpenCV-2.0.0\bin\Release\

скопируйте их в директорию к своему exe-файлу и пробуйте 🙂

Совсем не обязательно копировать все dll-файлы. Нужно просто определить — какие именно dll-файлы OpenCV вам необходимы для работы.
Например, если вы не используется функции машинного обучения, то линковать ml200.lib не нужно и ml200.dll так же явно лишний.

Посмотреть, какие именно dll-файлы требуются для работы вашей программы можно с помощью утилиты Dependency Walker

Всё ещё не заработало?
тогда вам не хватает Microsoft Visual C++ Redistruatable

вам нужно или скачать инсталлятор vcredist_x86.exe с сайта майкрософта:
Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)
Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)

либо проделать несколько шагов вручную:
1. Пересобрать свою программу с использованием внешнего манифеста (Project|Properties|Configuration Properties|Manifest Tool|Input and Output|Embed Manifest: No)

при этом в каталоге вместе с exe-ком появится файл
название_программы.exe.manifest

приблизительно такого содержания:


  
    
      
        
      
    
  
  
    
      
    
  

2. открываете этот файл на редактирование и удаляете все упоминания publicKeyToken

3. копируете все требуемые файлы из %ProgramFiles%\Microsoft Visual Studio 9.0\VC\redist\x86 в директорию к своему приложению

в простейшем случае это директории:
Microsoft.VC90.CRT\
Microsoft.VC90.OPENMP\

4. открыв эти директории вы так же увидите файлы манифеста:
Microsoft.VC90.CRT.manifest
Microsoft.VC90.OpenMP.manifest

их так же нужно отредактировать и убрать publicKeyToken

возможно, потребуется скопировать файл
Microsoft.VC90.OPENMP\vcomp90.dll
напрямую в каталог вашего exe-ника

Вот и всё!
Теперь ваша программа должна запускаться на любом компьютере под управлением Windows — даже под Windows Embedded.

Ссылки
Howto: Deploy VC2008 apps without installing vcredist_x86.exe


0 комментариев на «“Вопросы OpenCV — как заставить мою программу с OpenCV работать на другом компьютере?”»

  1. Можно ли избежать переноса dll-файлов в папку bin, и каким либо образов вшить в реализуемую библиотеку на с++/cli? Т.е. чтобы я отдавал одну библиотеку mydllname.dll, а все используемые библиотеки opencv были в нее включены?

    • можно использовать статическую версию библиотеки и собрать программу так, что ей вообще не будут требоваться внешние dll-ки.

    • а что значит статическую версию библиотеки, или может какие то настройки есть в линкере в настройках проекта?

    • спасибо, буду разбираться, тока не пойму пока как их подрубать к проекту

    • Нашел и на всякий случай напишу, что делать.
      Копируем библиотеки из папки
      C:\…\opencv\build\x86\vc9\bin
      в папку с exe-файлом.
      Туда же нужно добавить библиотеку tbb.dll — ее нет в официальной сборке opencv2.3.1, однако без нее opencv_imgproc231.dll работать отказывается.

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна конкурс манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение