2011-02-22 3 views
0

Мой TestDLL.cpp код выглядит следующим образом:C++ не может скомпилировать DLL с помощью GDI +

#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 есть 100+ ошибки из заголовков файлов GDI +. Однако GDI + отлично работает (компилирует) на моем консольном приложении (exe). Разве GDI + не совместим с DLL или что? И gdiplus.lib связан с тем, что кто-то спрашивает его ...

+1

Вы можете вставить ошибки или я должен использовать свой хрустальный шар? – karlphillip

+0

Stuff выше '#include" stdafx.h "' игнорируется ... также попробуйте выбрать лучшее имя для вашего предварительно скомпилированного файла заголовка. –

ответ

0

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

1

Ошибка, вероятно, из-за неправильные макросы, определенных см это MS article

+0

Кроме того, заголовки плат, которые никогда не меняются, должны быть включены из предварительно скомпилированного заголовка. В противном случае нет смысла даже иметь предварительно скомпилированный заголовок. –

0

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

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

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

1

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

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

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

1

Поместите это внутри скомпилированного заголовка

#include <stdio.h> 
#include <windows.h> 
#include <objidl.h> 
#include <gdiplus.h> 
using namespace Gdiplus; 
#pragma comment (lib,"Gdiplus.lib") 
Смежные вопросы