未解决的外部符号

6

主要文章中有一个头文件和一个源文件。复制这两个文件并添加一些头文件后:

#include <Windows.h>
#include <d2d1.h>
#pragma comment(lib, "d2d1")
#include <dwrite.h>
#include <d2d1helper.h>
#include "SafeRelease.h"

//安全释放文件

template<class Interface>
inline void
SafeRelease(
    Interface **ppInterfaceToRelease
    )
{
    if (*ppInterfaceToRelease != NULL)
    {
        (*ppInterfaceToRelease)->Release();

        (*ppInterfaceToRelease) = NULL;
    }
}

当我尝试编译这个项目时,出现了一个错误:

Error 1 error LNK2019: unresolved external symbol __imp__DWriteCreateFactory@12 referenced in function "private: long __thiscall SimpleText::CreateDeviceIndependentResources(void)" (?CreateDeviceIndependentResources@SimpleText@@AAEJXZ)

我不知道为什么会出现这种情况。所有的头文件都已经包含了。希望你们中的一些人能够帮助解决这个问题。
谢谢。


你是否为特定的include文件设置了lib和dll文件的路径? - DumbCoder
3个回答

18
你需要链接到Dwrite.lib,该库包含DWriteCreateFactory的实现。
参见这里的文档。底部的要求部分解释了你需要包含和链接的内容以使用错误所指的函数。
你可以通过添加以下行来修复此问题。
#pragma comment(lib, "Dwrite")

1
当我将其添加到dwrite.h的include下面时,问题就被解决了。 - Richard Garside
这也为我解决了同样的错误(只需在包含下面添加#pragma行)在WinRT C++组件中。 - ch3rryc0ke

1

添加后:

#pragma comment(lib, "dwrite")

这段代码是可行的。


1

您必须在要链接到应用程序的库列表中提及 Dwrite.lib。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接