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