当前位置: 首页 > wzjs >正文

模板建站能建个门户网站吗郑州官网网站推广优化

模板建站能建个门户网站吗,郑州官网网站推广优化,网站内容授权书,专做服装的网站之前在UE中加载第三方库的形式是以静态或者动态链接的形式加载但是不太容易复用。就想着能不能以插件的形式加载第三方库,这样直接把插件打包发行就可以复用了,之前也找过相应的教程但是很难找到比较简单易懂的教程,要么是比较复杂&#xff0…

之前在UE中加载第三方库的形式是以静态或者动态链接的形式加载但是不太容易复用。就想着能不能以插件的形式加载第三方库,这样直接把插件打包发行就可以复用了,之前也找过相应的教程但是很难找到比较简单易懂的教程,要么是比较复杂,要么是自己跟着教程做了一遍但是打包插件的时候,打包不成功。自己在经过各种查找教程及自己总结,发现了一种感觉相对比较简单的方法,下面把整体的过程介绍一下。
1 先创建一个C++的UE 项目,在项目中创建一个空白的插件,可以使用不同的UE版本,博主使用的是UE5.5 如下图
在这里插入图片描述
在这里插入图片描述
在MyPlugin下新建 ThirdParty文件夹,在ThirdParty文件下新建
include,lib,Win64文件夹,在include文件夹下放需要调用的第三放库的.h文件,在lib文件下放相应的.lib文件,Win64下放相应的.dll 文件。我这里用的 pch.h Wll_Dll.lib Wll_Dll.dll (创建第三库的方法之前写过,这里不再赘述)
在这里插入图片描述
2 下面开始设置MyPlugin.Build.cs的设置,整体的代码如下

// Copyright Epic Games, Inc. All Rights Reserved.using System.IO;
using UnrealBuildTool;public class MyPlugin : ModuleRules
{public MyPlugin(ReadOnlyTargetRules Target) : base(Target){// 使用共享 PCH,减少编译时间PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;// 添加依赖模块,确保 UHT 正确生成代码PublicDependencyModuleNames.AddRange(new string[] {"Core","CoreUObject","Engine"});PrivateDependencyModuleNames.AddRange(new string[] {"Slate","SlateCore"});// 获取插件目录路径string PluginPath = ModuleDirectory;string ThirdPartyPath = Path.Combine(PluginPath, "../../ThirdParty");// 确保 DLL 在打包时会被复制到 Binaries/Win64if (Target.Platform == UnrealTargetPlatform.Win64){string DLLPath = Path.Combine(ThirdPartyPath, "Win64", "Wll_Dll.dll");// 添加运行时依赖,确保 DLL 被复制到 Binaries 目录RuntimeDependencies.Add("$(PluginDir)/Binaries/Win64/Wll_Dll.dll", DLLPath, StagedFileType.NonUFS);}}
}

在运行时加载.DLL 关闭时卸载,MyPlugin.h的代码如下

#pragma once#include "Modules/ModuleManager.h"
// DLL 句柄和函数指针
void* DLLHandle = nullptr;
typedef int (*AddNumbersFunc)(int, int);
AddNumbersFunc AddNumbersPtr = nullptr;
class FMyPluginModule : public IModuleInterface
{
public:/** IModuleInterface implementation */virtual void StartupModule() override;virtual void ShutdownModule() override;
};

MyPlugin.cpp 的代码如下

// Copyright Epic Games, Inc. All Rights Reserved.#include "MyPlugin.h"
#include "Misc/Paths.h"
#include "HAL/PlatformProcess.h"
#define LOCTEXT_NAMESPACE "FMyPluginModule"void FMyPluginModule::StartupModule()
{// This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-moduleFString DLLPath = FPaths::Combine(FPaths::ProjectPluginsDir(), TEXT("MyPlugin/Binaries/Win64/Wll_Dll.dll"));UE_LOG(LogTemp, Warning, TEXT("Trying to load DLL from path: %s"), *DLLPath);if (!FPaths::FileExists(DLLPath)){UE_LOG(LogTemp, Error, TEXT("DLL not found at: %s"), *DLLPath);return;}// 加载 DLLDLLHandle = FPlatformProcess::GetDllHandle(*DLLPath);if (!DLLHandle){UE_LOG(LogTemp, Error, TEXT("Failed to load DLL: %s"), *DLLPath);return;}// 绑定 DLL 函数AddNumbersPtr = (AddNumbersFunc)FPlatformProcess::GetDllExport(DLLHandle, TEXT("Add"));//Dll 的两个导出函数 名 分别是 Add,Logif (!AddNumbersPtr){UE_LOG(LogTemp, Error, TEXT("Failed to bind AddNumbers function from DLL"));}else{UE_LOG(LogTemp, Warning, TEXT("AddNumbers function bound successfully"));}
}void FMyPluginModule::ShutdownModule()
{// This function may be called during shutdown to clean up your module.  For modules that support dynamic reloading,// we call this function before unloading the module.if (DLLHandle){FPlatformProcess::FreeDllHandle(DLLHandle);DLLHandle = nullptr;UE_LOG(LogTemp, Warning, TEXT("DLL Unloaded Successfully."));}
}#undef LOCTEXT_NAMESPACEIMPLEMENT_MODULE(FMyPluginModule, MyPlugin)

创建c++的蓝图函数库如下,在蓝图库函数中创建调用函数并暴露给蓝图使用
在这里插入图片描述
MyBlueprintFunctionLibrary.h 的代码如下

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"/*** */
UCLASS()
class MYPLUGIN_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{GENERATED_BODY()
public:UFUNCTION(BlueprintCallable, Category = "MyPlugin")static int CallAddNumbers(int A, int B);
};

MyBlueprintFunctionLibrary.cpp的代码如下

 if (AddNumbersPtr){return AddNumbersPtr(A, B); // 调用 DLL 中的函数}else{UE_LOG(LogTemp, Error, TEXT("AddNumbersPtr is NULL!"));return -1; // 如果函数指针为空,返回错误}

以上就是整体的创建流程及完整的运行代码,下面贴上运行结果
在这里插入图片描述
在这里插入图片描述
现在打包还是不能够成功的,得在MyPlugin.uplugin 加上白名单
代码 “WhitelistPlatforms”: [“Win64”] 完整的MyPlugin.uplugin 代码如下

{"FileVersion": 3,"Version": 1,"VersionName": "1.0","FriendlyName": "MyPlugin","Description": "","Category": "Other","CreatedBy": "","CreatedByURL": "","DocsURL": "","MarketplaceURL": "","SupportURL": "","CanContainContent": true,"IsBetaVersion": false,"IsExperimentalVersion": false,"Installed": false,"Modules": [{"Name": "MyPlugin","Type": "Runtime","LoadingPhase": "Default","WhitelistPlatforms": ["Win64"]}]
}

加上后就可以打包插件了,也可以给别人使用你这个插件,好了本片文章到此结束。

http://www.dtcms.com/wzjs/264614.html

相关文章:

  • 为什么用wp做网站百度上海分公司
  • 广州网站建设是什么意思安卓优化大师2021
  • 龙岗网站开发公司百度云资源链接分享群组
  • 网站推广是网站建设完成之后的长期工作百度竞价点击软件
  • 怎么查网站的域名备案天津seo推广优化
  • 网站框架是什么河南网站网络营销推广
  • 科普网站栏目建设方案怎么做网络营销平台
  • 微网站怎么免费做2023年最新新闻摘抄
  • 企业网站推广方案设计毕业设计手机如何制作自己的网站
  • 免注册个人网站制作百度一下你就知道官网下载安装
  • wordpress怎么复制页面白银网站seo
  • 怎么用源代码做网站seo如何优化网站步骤
  • 网站建设的安全措施软件外包公司排行榜
  • MATLAB 做网站郑州网络推广服务
  • 网站打开速度规定多长时间南宁seo服务优化
  • 网站建设要考虑哪些内容可以投放广告的网站
  • 大连博硕网站建设网站开发外包
  • 网站备案幕布尺寸关于营销的最新的新闻
  • 一个空间放多个网站百度竞价排名怎么做
  • windows server 2008 网站配置今天中国新闻
  • 网站源码在线查看国内十大搜索引擎网站
  • 政府网站模板 免费制作链接的小程序
  • 南通网站建设系统电话免费发广告的软件
  • wordpress 过时手机优化什么意思
  • 服装设计师有前途吗哈尔滨推广优化公司
  • 网站接入网方式网络推广员是什么工作
  • 网页制作三剑客是什么网站如何做关键词优化
  • 小型公司网站建设知乎最新域名查询
  • 公众号设计平台seo优化软件哪个好
  • 网站改版目标360网址导航