为什么与Direct X的链接会增加我的程序大小?

时间:2015-01-16 02:06:12

标签: c++ linker static-libraries portability demoscene

我需要制作一个符合以下要求的程序:

  • 独立(无安装)
  • 针对尺寸进行了优化
  • 兼容Windows XP

问题在于,例如添加#include <d3dx9.h>并使用单个函数将可执行文件大小增加370kb。

有没有办法/工具如果我只使用一些库的功能,它是不是完全链接到可执行文件?

我尝试了以下但没有成功

  • 发布模式
  • 整个程序优化
  • 最小化尺寸(/ O1)
  • 青睐小代码(/ Os)
  • / OPT:REF
  • / OPT:ICF
  • 使用链接时间代码生成(/ LTCG)

这是测试代码(我使用2004年10月的d3dx版本,允许在此处找到静态链接https://github.com/kavika13/jumpmanzero-thirdparty

#pragma comment (lib, "d3dx9.lib")
#include <d3dx9.h>
int main() {
    D3DXCreateSphere(0, 0, 0, 0, 0, 0);
    return 0;
}

注意:应该注意的是,使用相同库的更多功能会增加相同的~370Kb。

1 个答案:

答案 0 :(得分:0)

我打算建议/ OPT:REF,但后来看到你已经尝试过了。

如果一切都失败了,你可以试试其中一个&#34;可执行的打包器&#34;选项,例如ASPack(aspack.com)或UPX(upx.sourceforge.net)。

他们将压缩您的可执行文件,并且不会引入其他依赖项。