Direct2D在C++ Builder中只能部分链接

3

我有一个使用Direct2d的C++ Builder (Rad Studio Berlin)项目设置。使用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的方式链接适当的文件吗?

1个回答

2
我从另一个来源找到了解决方案。以下是解决方法:
经过一些调查,这个问题还没有被确定为一个错误。
对于许多标准的Windows API函数,IDE会自动添加正确的库,以便满足对函数引用的依赖关系。 DirectX(有点不常用)不会自动提供与头文件相对应的库,因此这会导致未解析的链接器错误。
解决方案要么是(如我先前提到的)将D2D1.lib添加到项目中,要么在代码中静态引用它:
// as long as D2D1.lib is on the library search path, it should be found
#pragma comment(lib,"D2D1.lib")

一些开发人员在头文件中添加了上述代码行,因此您只需要包含头文件即可使一切正常... DirectX团队没有这样做,因此会出现未解决的链接器错误。
希望这能澄清问题。

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