在UE4中使用静态链接库和动态链接库与普通程序中使用差不多,只是要在编译文件中设置库文件路径。下面创建一个第三人称模板的C++工程ThirdPerson,使用 https://blog.csdn.net/yb0022/article/details/78470166 这篇文章中的静态链接库和动态链接库。
一、静态链接库
在工程目录新建一个文件夹ThirdParty(与Content目录同一级),将CaptureScreen.h和CaptureScreen.lib复制到这个文件夹,接下来要在编译文件.build.cs文件中将这个目录添加到包含目录,使UE4能搜索到头文件(如果没有添加包含目录,头文件的路径就是../../ThirdParty/CaptureScreen.h),然后将CaptureScreen.lib添加到依赖库列表中,ThirdPerson.build.cs文件大致如下
//ThirdPerson.Build.cs
using UnrealBuildTool;
using System.IO;
public class ThirdPerson : ModuleRules
{
public ThirdPerson(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "ImageWrapper" });
PublicIncludePaths.Add(Path.Combine(ThirdPartyPath));
PublicAdditionalLibraries.Add(Path.Combine(ThirdPartyPath, "CaptureScreen.lib"));
}
private string ThirdPartyPath
{
get { return Path.GetFullPath(Path.Combine(ModuleDirectory, "../../ThirdParty/")); }
}
}
在AThirdPersonGameMode类中实现一个蓝图可调用的函数TestCapture来调用静态库中的函数,在游戏运行期间都可以调用来获取屏幕截图,为了方便这里就在StartPlay中调用TestCapture。.h和.cpp代码如下
// ThirdPersonGameMode.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "ThirdPersonGameMode.generated.h"
UCLASS(minimalapi)
class AThirdPersonGameMode : public AGameModeBase
{
GENERATED_BODY()
public:
AThirdPersonGameMode();
void StartPlay();
void EndPlay(const EEndPlayReason::Type EndPlayReason);
UFUNCTION(BlueprintCallable)
void TestCapture(int x,int y,int width,int height);
};
// ThirdPersonGameMode.cpp
#include "ThirdPersonGameMode.h"
#include "ThirdPersonCharacter.h"
#include "UObject/ConstructorHelpers.h"
#include"IImageWrapperModule.h"
#include"ModuleManager.h"
#include"IImageWrapper.h"
#include"Misc/FileHelper.h"
#include"CaptureScreen.h"//包含头文件
AThirdPersonGameMode::AThirdPersonGameMode()
{
// set default pawn class to our Blueprinted character
static Co