C ++无法使用GDI +编译dll

时间:2011-02-22 20:31:31

标签: c++ gdi+

我的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被链接,因为某人要求...

6 个答案:

答案 0 :(得分:1)

错误可能是由于定义了无效的宏,请参阅此MS article

答案 1 :(得分:1)

我遇到了同样的问题。以下行修复了它。

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

我希望这会有所帮助。

答案 2 :(得分:1)

将它放在预编译的标题

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

答案 3 :(得分:0)

您可能需要将gdi +添加到项目链接的库中。检查项目属性。

答案 4 :(得分:0)

using namespace gdiplus;这样的行是危险的,因为它们将从该命名空间中的所有内容拉到当前的命名空间中。这可能会导致在构建DLL时出现链接问题。

其中一个标题也可能使用相同的DLL_EXPORTS

但是,对前几条错误消息进行抽样可以让人们更轻松地帮助您。

答案 5 :(得分:0)

在使用GDI +编译DLL时遇到许多错误之后,我也来到了这里。但是,没有答案适用于我的情况。 我的DLL中出现错误的原因是定义了WIN32_LEAN_AND_MEAN宏。 因此,当您遇到GDI + API /类型的此类错误时,请确保未为您定义此宏。 要解决此问题,请删除此宏的所有定义(如果可以找到它们的话),或者在包含以下任何平台头文件的源文件 之前取消定义它们:

#undef WIN32_LEAN_AND_MEAN