3

我有一个 C++ Builder (Rad Studio Berlin) 项目设置来使用 Direct2d。画布绘图与 TDirect2DCanvas 一起工作得很好,这表明 Direct2D 正在正确链接。一切都顺利渲染。但是,我需要使用矩阵。尝试链接时出现链接错误。例如,当我尝试时:

canvas->RenderTarget->SetTransform(D2D1::Matrix3x2F::Rotation(15.0, D2D1PointF(100, 100)));

...我收到以下链接错误:

[ilink32 Error] Error: Unresolved external 'D2D1MakeRotateMatrix' referenced from C:\DP\TRUNK\SRC\CLIENTSIDE\APPLICATIONS\VIEWER\WIN32\DEBUG\MIMAGE.OBJ

如果我只包含标题,C++ builder 应该已经设置为链接到 direct2d。任何人都可以帮助我以 C++ Builder 方式链接相应的文件吗?

4

1 回答 1

2

我从不同的来源找到了解决方案。这里是:

经过一番研究,此问题尚未确定为错误。

对于许多标准 Windows API 函数,IDE 将自动添加正确的库,以便满足对函数引用的依赖。使用 DirectX(这有点不常用),IDE 不会自动提供与头文件对应的库,因此这会导致未解决的链接器错误。

解决方案是(正如我之前提到的)将 D2D1.lib 添加到项目中,或者在代码中静态引用它:

// as long as D2D1.lib is on the library search path, it should be found
#pragma comment(lib,"D2D1.lib")

一些开发人员将上面的代码行添加到他们的标题中,因此您需要做的就是包含标题,一切都很好...... DirectX 团队没有这样做,因此未解决的链接器错误。

希望这可以澄清问题,

于 2016-06-23T20:05:30.540 回答