F1.模块(项目)名_API
大约 4 分钟
模块(项目)名_API
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "TEST.generated.h"
UCLASS()
class MYGame_API UTEST : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category ="TEST")
static void TestFun();
};
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "TEST.generated.h"
UCLASS()
class UTEST : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category ="TEST")
static void TestFun();
};
#include "TEST.h"
UFUNCTION(BlueprintCallable, Category = "TestOtherFun")
static void TestOtherFun();
void UExorcistFunctionLibrary::TestOtherFun()
{
UTEST::TestFun();
}
不需要导入和导出: 对于一些类,特别是那些不涉及跨库边界的纯内部实现,可能没有必要使用这样的宏。如果一个类只在单一的项目中使用,而不需要在其他项目或库中导入,那么就不需要使用导入和导出规范。
使用模板类或内联函数: 对于模板类或内联函数,它们的定义通常放在头文件中,这样编译器可以在每个使用它们的地方生成对应的代码,而不需要导入和导出。
宏定义中已经包含: 在一些情况下,类的导出规范可能已经在其他宏定义中包含,因此没有必要重复定义。
库或项目设计决策: 有时,项目或库的设计决策可能决定不使用导入和导出规范。这可能是因为项目的组织结构,构建过程,或者对于代码的特定要求。
- 新建一个插件,并在我们项目对应的
build.cs
加入插件模块
PrivateDependencyModuleNames.AddRange(
new string[]
{
"插件模块名"
}
);
- 此时插件中没写
插件名_API
,编译后发生链接错误。