Народ, я не забыл о примере сейчас пробую реализовать с ThirdParty. Почти получилось все собирает но почемуто откомпелированый экзешник dll не видит Как решу сразу пример кину.
Здарова вот *.build.cs Тут в принципе ничего особенного только путь к хедерам добавляем и к библиотека. Главное обратить внимание на libpq.a -lpq это библиотека для линукса для винды поидее libpq.dll
using UnrealBuildTool;
public class Game : ModuleRules
{
public Game(TargetInfo Target)
{
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" });
PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
if (Target.Platform == UnrealTargetPlatform.Linux)
{
// linux
PrivateIncludePaths.Add("postgresql-9.5rc1-2-x64-bigsql/opt/postgresql/pg95/include");
PublicAdditionalLibraries.Add("postgresql-9.5rc1-2-x64-bigsql/opt/postgresql/pg95/lib/libpq.a -lpq");
}
}
}
А здесь сам гейм мод в бегин плее подключаемся, а в прелогине закидываем чтонибуть в базу.
#include "MyGame.h"
#include "loginServer_GameMode.h"
#include "CoreMisc.h"
#include "libpq-fe.h" // postgresql header for cpp
PGconn *CONN = NULL; // create connection variable
FString PGQUERY; // query for postgresql
void AloginServer_GameMode::PreLogin(const FString& Options, const FString& Address, const TSharedPtr<const FUniqueNetId>& UniqueId, FString& ErrorMessage)
{
FString id;
FString psw;
FString eMail;
// check connection
if (PQstatus(CONN) == CONNECTION_OK)
{
// add some values
PGQUERY = "INSERT INTO users_tbl ( id, psw, email) VALUES ('" + id + "', '" + psw + "', '" + eMail + "')";
PGresult *_res = PQexec(CONN, TCHAR_TO_ANSI(*PGQUERY));
if (PQresultStatus(_res) != PGRES_COMMAND_OK)
{
PQclear(_res);
}
}
}
void AloginServer_GameMode::BeginPlay()
{
Super::BeginPlay();
FString dbIP = "127.0.0.1";
FString dbPort = "5432";
FString dbUser = "User";
FString dbPsw = "123";
// connect to db
PGQUERY = "user=" + dbUser + " password=" +dbPsw + " dbname=mydb hostaddr=" + dbIP +" port=" + dbPort + " application_name=FLoginServer";
CONN = PQconnectdb(TCHAR_TO_ANSI(*PGQUERY));
// check connection
if (PQstatus(CONN) != CONNECTION_OK)
{
PQfinish(CONN);
FString _logMsg = "ERROR: Can`t connect to DB ";
}
}
Очень удивился русской речи тут.
Кроме того странно, что твой вариант билда работает, т. к. абсолютно не похож на офф. рекомендации, так еще и проще в разы.
Не подскажешь как ты настраивал vs? Просто я сделал то же самое, за исключением добавления директории и для Windows, через else, но мне выдает LINK : fatal error LNK1181: cannot open input file “путь/либа. dll” (тот же postgresql, но 9.6)
Буду ооочень благодарен.
Здарова KenyZ, к сожалению сейчас не смогу вспомнить ( я уже пол года как перешел на другой движок лумберьярд. Unreal Engine отличный движок но по некоторым требованиям и лицензионному соглашению мне не подошел. Насчет потерянного файла скорее всего проблема в пути версия здесь не причем. Кроме того я что то припоминаю насчет dll и lib если правельно помню то lib ты линкуеш а dll это уже готовый двоичный вариант для работы с екзешником.
Ну да… по идеи так. Ладно буду пробовать, спасибо.