Приложение построено с code :: blocks работает только из code :: blocks - PullRequest
0 голосов
/ 26 марта 2019

Я создал приложение с code :: blocks. Он работает нормально, когда я запускаю его из code: blocks (Ctrl-F10). Когда я запускаю его, дважды щелкнув в проводнике или в командной строке, я получаю сообщение «Не удалось правильно запустить приложение (0xc000007b)»

Что отличается, когда я запускаю приложение в code :: blocks с помощью Ctrl-F10, по сравнению с другими методами запуска приложения?

Я понимаю, что номер ошибки как-то связан с 64- и 32-битными приложениями. Мое приложение и моя ОС 64-битные.

Я успешно создал и запустил несколько других приложений. Единственным существенным отличием от этого является то, что он включает в себя NDI SDK от NewTek https://www.newtek.com/

Вот код:

#include <iostream>
#include <Processing.NDI.Lib.h>
#include <nana/gui.hpp>

using namespace std;

int main()
{
    if (!NDIlib_initialize())
        throw std::runtime_error("Cannot initialize NDI");

    NDIlib_find_instance_t pNDI_find = NDIlib_find_create_v2();
    if (!pNDI_find)
        throw std::runtime_error("Cannot initialize NDI");

    nana::form fm(nana::rectangle( 100,100, 300, 300 ) );
    fm.show();
    nana::exec();

    return 0;
}

Вот команды сборки:

        g++.exe -Wall -fexceptions -m64 -std=c++11 -O2 
    -I"C:\Program Files\NewTek\NewTek NDI 3.8 SDK\Include"
     -IC:\Users\James\code\nana-1.7.0\include 
    -c C:\Users\James\code\VisControl\ndi\test\main.cpp -o obj\Release\main.o

        g++.exe -L"C:\Program Files\NewTek\NewTek NDI 3.8 SDK\Lib\x64" 
-LC:\Users\James\code\nana-1.7.0\build\codeblocks 
-o ..\..\bin\test.exe obj\Release\main.o  
-static-libgcc -m64 
-s  "C:\Program Files\NewTek\NewTek NDI 3.8 SDK\Lib\x64\Processing.NDI.Lib.x64.lib"
 -lnana -lgdi32 -lcomdlg32 -lstdc++fs

1 Ответ

0 голосов
/ 26 марта 2019

Проблема исчезла, когда я добавил параметр компоновщика -static

...