• Qwt: как передать данные графику?

    Riateche
    @Riateche
    Вот самый простой метод:
    void QwtPlotCurve::setSamples (const QVector< double > & xData, const QVector< double > & yData )
    
    Ответ написан
    3 комментария
  • Иероглифы в Qt (minGW), как исправить?

    Как вариант можно попробовать кодировку консоли поменять:
    /c/WINDOWS/system32/chcp.com 65001
    65001 — UTF-8, соответственно.
    Ответ написан
    4 комментария
  • Русские IT сайты

    @somneart
    Мне кажется, из российских кроме хабра ничего читать не надо — лучше иностранные.
    Ответ написан
    1 комментарий
  • Русские IT сайты

    Akson87
    @Akson87
    3dnews.ru, ixbt, overclocers.ru
    Ответ написан
    Комментировать
  • Русские IT сайты

    dima_eam
    @dima_eam
    раньше cyberguru был неплох, но чтото там уж редко статьи новые появляются.
    Ответ написан
    Комментировать
  • Подключение dll к проекту Visual Studio 2010 (C++)

    @MikhailEdoshin
    Нужно сделать .lib-файл самостоятельно. Посмотрите, нет ли в комплекте с .dll файла .def. Если есть, то можно получить .lib с помощью

    lib.exe /DEF:mylib.def mylib.dll

    или

    lib.exe /DEF:mylib.def /OUT:mylibname.lib mylib.dll

    если нужно другое имя. В таком виде (dll + def), распространяется, например, sqlite3.

    Если .def-файла нет, посмотрите, какие у вас символы в библиотеке через

    dumpbin /exports mylib.dll

    Если это практически те же имена, что и в заголовочном файле, значит, библиотека экспортирует символы в стиле С; это хорошо. Перечислите все нужные имена в командной строке:

    lib.exe /EXPORT:mylib_func1 /EXPORT:mylib_func2 mylib.dll

    (.def-файл, по сути, делает то же самое.) Единственное, я сейчас не помню, но к именам может спереди добавлятся подчеркивание. Я не уверен, нужно ли указывать имена с подчеркиванием или без.

    Если там имен нет, значит, они отрезаны, функции можно определить только по порядковому номеру. Если вокруг них всякая муть, это C++, а муть означает закодированный тип параметров. Это все не очень хорошо, конечно, потому что соответствие номеров функциям не определить (разве что экспериментально), а стандарта на кодирование нет. Но технически создать .lib-файл можно, у опции /EXPORT полная сигнатура такая:

    /EXPORT: entryname[= internalname][,@ ordinal[, NONAME]][, DATA]

    То есть можно и переименовать функцию, и по номеру ее выбрать, и данные экспортировать. Но это на крайний случай.

    lib.exe обычно не в PATH, из обычной командной строки не найдется, но в группе инструментов Visual Studio должно быть что-то вроде «Command Prompt» — он открывает консоль и добавляет нужные пути в PATH, так что инструменты командной строки становятся доступными.

    Ссылки: dumpbin, lib.
    Ответ написан
  • Подключение dll к проекту Visual Studio 2010 (C++)

    zed91
    @zed91
    Объявляете указатель на функцию (такую как в h-нике), и переменную такого типа. Подгружаете библиотеку (LoadLibrary) Потом получаете адрес функции из библиотеки в помощью функции «GetProcAddress», и присваиваете этот адрес переменной типа указателя на функцию. Теперь функцию можно вызывать. Механизм называется динамическая подгрузка библиотеки. Примерно так:

    typedef int (__stdcall somefuncptr*) (int, int); //по поводу этой строки не уверен

    somefuncptr somefunc;

    somefunc = GetProcAddress(«dllfuncname»);

    int someval = somefunc(5, 10);
    Ответ написан
    Комментировать
  • Подключение dll к проекту Visual Studio 2010 (C++)

    kostik450
    @kostik450
    Делаете так:
    lib.exe /DEF:test.def /OUT:test.lib /MACHINE:IX86

    В файле test.def нужно записать:
    LIBRARY TEST
    EXPORTS
    testfunc@32 @1

    Узнать, какие там цифры вместо @32 проще всего через ошибки линковки (число в имени функции обычно равно числу ее параметров, умноженному на 4), а что там вместо @1 можно узнать через утилиту dumpbin.exe по списку экспортируемых из DLL функций.

    Бывают DLL и без @32 — это зависит от того, как она была скомпилирована через __cdecl или через __stdcall
    (это тоже легко устанавливается экспериментально)
    Ответ написан
    Комментировать