C ++ не может скомпилировать dll с использованием GDI + - PullRequest
0 голосов
/ 22 февраля 2011

Мой код TestDLL.cpp выглядит следующим образом:

#ifdef DLL_EXPORTS
    __declspec(dllexport) void test();
#else
    __declspec(dllimport) void test();
#endif

#include "stdafx.h"
#include <windows.h>
#include <gdiplus.h>

using namespace Gdiplus;

void test()
{
    GdiplusStartupInput gdiplusStartupInput;
}

Теперь, когда я пытаюсь скомпилировать dll, в заголовочных файлах GDI + возникает более 100 ошибок.Однако GDI + отлично работает (компилируется) в моем консольном приложении (exe).Разве GDI + не совместим с DLL или как?И gdiplus.lib связан, если кто-то спросит его ...

Ответы [ 5 ]

1 голос
/ 04 ноября 2011

Поместите это в предварительно скомпилированный заголовок

#include <stdio.h>
#include <windows.h>
#include <objidl.h>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib,"Gdiplus.lib")
1 голос
/ 31 марта 2011

У меня была такая же проблема.Следующая строка исправила это.

#pragma comment (lib,"Gdiplus.lib")

Надеюсь, это поможет.

1 голос
/ 22 февраля 2011

Вероятно, ошибки связаны с определением недопустимых макросов, см. Эту статью MS

0 голосов
/ 22 февраля 2011

Строки типа using namespace gdiplus; опасны тем, что они вытягивают все из этого пространства имен в текущее пространство имен.Это может привести к проблемам со связыванием при создании библиотеки DLL.

Также возможно, что один из этих заголовков использует тот же DLL_EXPORTS

Но выборка первых нескольких сообщений об ошибкахлюдям было бы намного легче помочь вам.

0 голосов
/ 22 февраля 2011

Возможно, вам нужно добавить gdi + в библиотеки, на которые ссылается ваш проект.Проверьте свойства проекта.

...