我有一个 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++ 构建器应该已经设置为链接到 direct2d。任何人都可以帮助我以 C++ Builder 方式链接到适当的文件吗?
我从不同的来源找到了解决方案。这里是:
经过一番研究,该问题尚未确定为 bug。
对于许多标准 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 团队没有这样做,因此出现了未解决的链接器错误。
希望这能澄清这个问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)