Библиотеки\library

Народ, я не забыл о примере сейчас пробую реализовать с ThirdParty. Почти получилось все собирает но почемуто откомпелированый экзешник dll не видит :frowning: Как решу сразу пример кину.

Здарова вот *.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 это уже готовый двоичный вариант для работы с екзешником.

Ну да… по идеи так. Ладно буду пробовать, спасибо.

C mysql - по аналогии.

1 Like