C++ C++;can';t使用GDI+编译dll;

C++ C++;can';t使用GDI+编译dll;,c++,gdi+,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() {

我的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;
}
#ifdef DLL#u导出
__declspec(dllexport)无效测试();
#否则
__declspec(dllimport)无效测试();
#恩迪夫
#包括“stdafx.h”
#包括
#包括
使用名称空间Gdiplus;
无效测试()
{
GdiplusStartupInput GdiplusStartupInput;
}
现在,当我试图编译dll时,GDI+的头文件中有100多个错误。
然而,GDI+在我的控制台应用程序(exe)上工作(编译)很好。GDI+与DLL不兼容吗?并且gdiplus.lib会被链接起来,以防有人询问……

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

错误可能是由于定义的宏无效造成的,请参见此

行,如使用命名空间gdiplus的
是危险的,因为它们将所有内容从该名称空间拉入当前名称空间。这可能会导致在构建DLL时出现链接问题

也有可能其中一个头使用相同的
DLL\u导出


但是,对前几条错误消息进行采样将使人们更容易帮助您。

我也有同样的问题。下面的一行修复了它

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

我希望这会有所帮助。

将其放入预编译标题中

#include <stdio.h>
#include <windows.h>
#include <objidl.h>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib,"Gdiplus.lib")
#包括
#包括
#包括
#包括
使用名称空间Gdiplus;
#pragma注释(lib,“Gdiplus.lib”)

我也是在使用GDI+编译DLL时遇到许多错误后来到这里的。然而,没有一个答案适用于我的情况。 我在DLL中出错的原因是定义了宏WIN32\u LEAN\u和\u MEAN。 因此,请确保在GDI+API/类型出现此类错误时,不会为您定义此宏。 要解决此问题,请删除此宏的任何定义(如果可以找到),或在包含任何平台头文件之前在源文件的顶部取消定义,如下所示:

#undef WIN32_LEAN_AND_MEAN

你能粘贴错误吗?或者我应该使用我的水晶球吗?上面的
#包括“stdafx.h”
的内容被忽略了。。。另外,请尝试为预编译头文件选择一个更好的名称。此外,永不更改的平台头文件应包含在预编译头文件中。否则,即使有一个预编译头也没有意义。