雪千渔Blog

  • 首页
  • Coding
    • dotNet
    • C++
    • Lua
    • Visual Basic
    • Java
    • Android
    • Web
  • DCC
    • Maya
    • Maya-Plug
    • AfterEffect
    • AfterEffect-Plug
    • PhotoShop-Plug
  • GameDev
    • Unity3D
    • UnrealEngine
    • 经验杂谈
    • 游戏设计
    • 自研引擎
    • 效果实现
  • Graphics
    • OpenGL
    • Vulkan
    • 计算机图形学
  • 其他
    • 乱七八糟
    • 软件工具
    • 留言板
    • 自制素材
    • 关于我
雪千渔blog
唯有热爱,能抵漫长岁月
  1. 首页
  2. GameDev
  3. Unity3D
  4. 正文

修改UnityPlayer.dll的名字

2022年2月12日 1476点热度 1人点赞 1条评论

其实也是没事儿闲的,研究了两个小时怎么改名。

在Build Setting面板编译打包的时候需要勾选Create Visual Studio Solution。点击build选择路径,这样就创建了一个windows的C++解决方案。

解决方案里总共有3个项目,分别是:

  1. 你的项目名字
  2. UnityData
  3. UnityPlayerStub

其中你的项目名字是主启动项目,使用windows的wWinMain函数作为窗体类函数入口(main是控制台入口),会去调用UnityMain函数。

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd)
{
    return UnityMain(hInstance, hPrevInstance, lpCmdLine, nShowCmd);
}

这个UnityMain函数是include自UnityPlayerStub项目中的导出函数,而该函数的实现放在UnityPlayerStub项目中的Exports.cpp中。

这里使用了一个欺骗手段,UnityPlayer.dll包含了引擎等代码,我们无法自己编译,而UnityPlayerStub这个项目也会编译出UnityPlayer.dll这个文件,但从实现上来看什么都没有

#include "Exports.h"

int UnityMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPWSTR /*lpCmdLine*/, int /*nShowCmd*/)
{
    return 0;
}

也就是说,UnityPlayerStub这个项目编译出的dll的意义只是为了让你的项目可以通过编译,在程序启动时,会去链接真正的UnityPlayer.dll。

接下来我们只需要把UnityPlayerStub编译出这个假的UntiyPlayer.lib改名为Engine.lib,然后在主项目的项目属性->链接器->命令行->其它选项中,修改其链接的名字。

"$(ArtifactsDir)UnityPlayerStub\bin\UnityPlayer.lib"

修改为

"$(ArtifactsDir)UnityPlayerStub\bin\Engine.lib"

重新编译后即可。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: Unity
最后更新:2022年2月12日

JomiXedYu

独游开发者 & 技术美术

点赞
< 上一篇
下一篇 >

文章评论

  • 食我大雕

    :mrgreen: 不错.

    2022年2月12日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    JomiXedYu

    独游开发者 & 技术美术

    最新 热点 随机
    最新 热点 随机
    HLSL对Vulkan的适应性以及伪语义绑定 GPU呈现模式与垂直空白 自研引擎PulsarEngine的Shader编译流程 UE材质Custom节点与HLSL的HACK操作 UE5出现D3D12崩溃报错解决方案 游戏引擎脚本绑定的三种写法与利弊
    HLSL对Vulkan的适应性以及伪语义绑定
    C#之支持断点续传的下载器 C#之拓展方法的本质 VB6 Minecraft启动器ColorLauncher开源 VSTO之Ribbon显示内置图标 Visual Basic6 美化简洁类模块 扁平UI C++友元少见用法:友元函数的定义内联
    友情链接
    • DorinXL
    • 小博博客
    • 秋橘斋

    COPYRIGHT © 2014-2023 雪千渔Blog. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    辽ICP备20006894号-1