开发者

C++ can't compile dll using GDI+

开发者 https://www.devze.com 2023-02-13 06:30 出处:网络
My TestDLL.cpp code looks like this: #ifdef DLL_EXPORTS __declspec(dllexport) void test(); #else __declspec(dllimport) void test();

My TestDLL.cpp code looks like this:

#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;
}

Now when im trying to compile the dll there are 100+ errors from header files of GDI+. However the GDI+ works(compiles) fine on my console application (exe). Isn't GDI+ compatible with D开发者_StackOverflow社区LL's or what? And the gdiplus.lib is linked incase someone asks it...


I had the same problem. The following line fixed it.

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

I hope this helps.


Put this inside your precompiled header

#include <stdio.h>
#include <windows.h>
#include <objidl.h>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib,"Gdiplus.lib")


The errors are likely due to invalid macros defined, see this MS article


You probably need to add gdi+ to the libraries your project is linking against. Check the project properties.


Lines like using namespace gdiplus; are dangerous in that they pull everything from that namespace into the current namespace. This can lead to problems linking when you're building a DLL.

It's also possible that one of those headers is using the same DLL_EXPORTS

But a sampling of the first few error messages would make it a lot easier for people to help you.


I also came here after getting numerous errors when compiling my DLL using GDI+. However, none of the answers applied to my case. Reason for my getting errors in my DLL was defining the macro WIN32_LEAN_AND_MEAN. So, make sure this macro does not get defined for you when you get such errors for GDI+ APIs/types. To resolve, remove any definitions of this macro (if you can find them) or undefine them at the top of your source file before you include any of the platform header files like so:

#undef WIN32_LEAN_AND_MEAN
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号