Several fixes for compilation with gcc (doesn't link)

This commit is contained in:
eelke 2017-08-22 12:45:45 +02:00
parent a2f39692a2
commit dd9906dbd8
20 changed files with 379 additions and 262 deletions

View file

@ -9,6 +9,8 @@
#include <QScrollBar>
#include <QStandardPaths>
#include <windows.h>
BackupDialog::BackupDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::BackupDialog)
@ -81,7 +83,7 @@ void BackupDialog::on_process_errorOccurred(QProcess::ProcessError error)
msg = tr("Failed to start");
break;
case 1:
msg = tr("Crasged");
msg = tr("Crashed");
break;
case 2:
msg = tr("Timedout");
@ -175,6 +177,50 @@ void BackupDialog::on_btnStart_clicked()
setParams(arguments);
// BOOL res = AllocConsole();
// if (!res) {
// DWORD error = GetLastError();
// QMessageBox::critical(this, "pglab", tr("AllocConsole failed %1").arg(error), QMessageBox::Close);
// }
// HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
// DWORD written;
// res = WriteConsoleOutputCharacter(out, L"Hello, world!\n", 14, {0, 0}, &written);
// PROCESS_INFORMATION proc_info;
// STARTUPINFO startup_info;
// memset(&startup_info, 0, sizeof(startup_info));
// startup_info.cb = sizeof(startup_info);
// startup_info.lpReserved;
// startup_info.lpDesktop;
// startup_info.lpTitle;
// startup_info.dwX;
// startup_info.dwY;
// startup_info.dwXSize;
// startup_info.dwYSize;
// startup_info.dwXCountChars;
// startup_info.dwYCountChars;
// startup_info.dwFillAttribute;
// startup_info.dwFlags = STARTF_USESTDHANDLES;
// startup_info.wShowWindow;
// startup_info.cbReserved2;
// startup_info.lpReserved2;
// startup_info.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
// startup_info.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
// startup_info.hStdError = GetStdHandle(STD_ERROR_HANDLE);
// res = CreateProcess(
// LR"_(C:\Prog\build-conoutputtest-Desktop_Qt_5_8_0_MSVC2015_32bit2-Debug\debug\conoutputtest.exe)_",
// NULL, // _Inout_opt_ LPTSTR lpCommandLine,
// NULL, // _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
// NULL, // _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
// TRUE,
// 0, // _In_ DWORD dwCreationFlags,
// NULL, // _In_opt_ LPVOID lpEnvironment,
// NULL, // _In_opt_ LPCTSTR lpCurrentDirectory,
// &startup_info, // _In_ LPSTARTUPINFO lpStartupInfo,
// &proc_info // _Out_ LPPROCESS_INFORMATION lpProcessInformation
// );
// QString program = R"_(C:\prog\build-conoutputtest-Desktop_Qt_5_8_0_MSVC2015_32bit2-Debug\debug\conoutputtest.exe)_";
// QStringList arguments;
// arguments << "/C" << "DIR /S c:\\";
@ -188,6 +234,13 @@ void BackupDialog::on_btnStart_clicked()
auto p = new QProcess(this);
ConnectTo(p);
p->setProcessEnvironment(env);
p->setCreateProcessArgumentsModifier([] (QProcess::CreateProcessArguments *args)
{
args->flags |= CREATE_NEW_CONSOLE;
args->flags &= ~DETACHED_PROCESS;
args->startupInfo->dwFlags &= ~STARTF_USESTDHANDLES;
});
p->start(program, arguments);
}
@ -221,3 +274,4 @@ void BackupDialog::on_selectDestination_clicked()
ui->editFilename->setText(QDir::toNativeSeparators(fn));
}
}

View file

@ -78,6 +78,8 @@ void DatabaseWindow::connectionStateChanged(ASyncDBConnection::State state)
case ASyncDBConnection::State::CancelSend:
status_str = tr("Query geannuleerd");
break;
case ASyncDBConnection::State::Terminating:
break;
}
// addLog(status_str);
statusBar()->showMessage(status_str);

View file

@ -26,16 +26,16 @@ void PgAuthIdContainer::load(const Pgsql::Result &res)
bool with_rls = (m_catalogue->serverVersion() >= 90500);
for (auto row : res) {
PgAuthId v;
v.oid = row.get(0); // InvalidOid;
v.name = row.get(1);
v.super = row.get(2);
v.inherit = row.get(3);
v.createRole = row.get(4);
v.createDB = row.get(5);
v.canlogin = row.get(6);
v.replication = row.get(7);
v.connLimit = row.get(8);
v.validUntil = row.get(9);
v.oid << row.get(0); // InvalidOid;
v.name << row.get(1);
v.super << row.get(2);
v.inherit << row.get(3);
v.createRole << row.get(4);
v.createDB << row.get(5);
v.canlogin << row.get(6);
v.replication << row.get(7);
v.connLimit << row.get(8);
v.validUntil << row.get(9);
v.bypassRls = with_rls ? (bool)row.get(10) : false;
// QDateTime
m_container.push_back(v);

View file

@ -18,17 +18,17 @@ void PgDatabaseContainer::load(const Pgsql::Result &res)
m_container.reserve(n_rows);
for (auto row : res) {
PgDatabase v;
v.oid = row.get(0); // InvalidOid;
v.name = row.get(1);
v.dba = row.get(2); // owner?
v.encoding = row.get(3);
v.collate = row.get(4);
v.ctype = row.get(5);
v.isTemplate = row.get(6);
v.allowConn = row.get(7);
v.connLimit = row.get(8);
v.tablespace = row.get(9);
v.acl = row.get(10);
v.oid << row.get(0); // InvalidOid;
v.name << row.get(1);
v.dba << row.get(2); // owner?
v.encoding << row.get(3);
v.collate << row.get(4);
v.ctype << row.get(5);
v.isTemplate << row.get(6);
v.allowConn << row.get(7);
v.connLimit << row.get(8);
v.tablespace << row.get(9);
v.acl << row.get(10);
m_container.push_back(v);
}
std::sort(m_container.begin(), m_container.end());

View file

@ -48,37 +48,37 @@ void PgTypeContainer::load(const Pgsql::Result &res)
m_container.reserve(n_rows);
for (auto row : res) {
PgType v;
v.oid = row.get(0); // InvalidOid;
v.typname = row.get(1); //.asQString(); //. operator QString(); // "name";"NO"
v.typnamespace = row.get(2); // InvalidOid;//"oid";"NO"
v.typowner = row.get(3); // InvalidOid;//"oid";"NO"
v.typlen = row.get(4); // -1;//"smallint";"NO"
v.typbyval = row.get(5); // false;//"boolean";"NO"
v.typtype = row.get(6);//""char"";"NO"
v.typcategory = row.get(7);//""char"";"NO"
v.typispreferred = row.get(8); //false;//"boolean";"NO"
v.typisdefined = row.get(9); //false;//"boolean";"NO"
v.typdelim = row.get(10); //""char"";"NO"
v.typrelid = row.get(11); // InvalidOid;//"oid";"NO"
v.typelem = row.get(12); // InvalidOid;//"oid";"NO"
v.typarray = row.get(13); // InvalidOid;//"oid";"NO"
v.typinput = row.get(14).asQString();//regproc";"NO"
v.typoutput = row.get(15).asQString();//"regproc";"NO"
v.typreceive = row.get(16).asQString();//"regproc";"NO"
v.typsend = row.get(17).asQString();//"regproc";"NO"
v.typmodin = row.get(18).asQString();//"regproc";"NO"
v.typmodout = row.get(19).asQString();//"regproc";"NO"
v.typanalyze = row.get(20).asQString();//"regproc";"NO"
v.typalign = row.get(21); // //""char"";"NO"
v.typstorage = row.get(22); //""char"";"NO"
v.typnotnull = row.get(23); //"boolean";"NO"
v.typbasetype = row.get(24); //"oid";"NO"
v.typtypmod = row.get(25); //-1;//"integer";"NO"
v.typndims = row.get(26); //"integer";"NO"
v.typcollation = row.get(27); //InvalidOid;//"oid";"NO"
v.typdefaultbin = row.get(28).asQString();//"pg_node_tree";"YES"
v.typdefault = row.get(29).asQString();//"text";"YES"
v.typacl = row.get(30).asQString();//"ARRAY";"YES"
v.oid << row.get(0); // InvalidOid;
v.typname << row.get(1); //. operator QString(); // "name";"NO"
v.typnamespace << row.get(2); // InvalidOid;//"oid";"NO"
v.typowner << row.get(3); // InvalidOid;//"oid";"NO"
v.typlen << row.get(4); // -1;//"smallint";"NO"
v.typbyval << row.get(5); // false;//"boolean";"NO"
v.typtype << row.get(6);//""char"";"NO"
v.typcategory << row.get(7);//""char"";"NO"
v.typispreferred << row.get(8); //false;//"boolean";"NO"
v.typisdefined << row.get(9); //false;//"boolean";"NO"
v.typdelim << row.get(10); //""char"";"NO"
v.typrelid << row.get(11); // InvalidOid;//"oid";"NO"
v.typelem << row.get(12); // InvalidOid;//"oid";"NO"
v.typarray << row.get(13); // InvalidOid;//"oid";"NO"
v.typinput << row.get(14);//regproc";"NO"
v.typoutput << row.get(15);//"regproc";"NO"
v.typreceive << row.get(16);//"regproc";"NO"
v.typsend << row.get(17);//"regproc";"NO"
v.typmodin << row.get(18);//"regproc";"NO"
v.typmodout << row.get(19);//"regproc";"NO"
v.typanalyze << row.get(20);//"regproc";"NO"
v.typalign << row.get(21); // //""char"";"NO"
v.typstorage << row.get(22); //""char"";"NO"
v.typnotnull << row.get(23); //"boolean";"NO"
v.typbasetype << row.get(24); //"oid";"NO"
v.typtypmod << row.get(25); //-1;//"integer";"NO"
v.typndims << row.get(26); //"integer";"NO"
v.typcollation << row.get(27); //InvalidOid;//"oid";"NO"
v.typdefaultbin << row.get(28);//"pg_node_tree";"YES"
v.typdefault << row.get(29);//"text";"YES"
v.typacl << row.get(30);//"ARRAY";"YES"
m_container.push_back(v);
}
std::sort(m_container.begin(), m_container.end());

View file

@ -39,12 +39,12 @@ void PgsqlDatabaseCatalogue::loadInfo(Pgsql::Connection &conn)
Pgsql::Result r = conn.query("SHOW server_version_num");
if (r && r.resultStatus() == PGRES_TUPLES_OK)
if (r.rows() == 1)
m_serverVersion = r.get(0, 0);
m_serverVersion << r.get(0, 0);
r = conn.query("SELECT version()");
if (r && r.resultStatus() == PGRES_TUPLES_OK)
if (r.rows() == 1)
m_serverVersionString = r.get(0, 0);
m_serverVersionString = r.get(0, 0).asQString();
}
void PgsqlDatabaseCatalogue::loadTypes(Pgsql::Connection &conn)

View file

@ -1,4 +1,5 @@
#include "Pgsql_Params.h"
#include <cstring>
using namespace Pgsql;
@ -30,16 +31,13 @@ Params::Params(Params&& rhs)
, m_paramValues(std::move(rhs.m_paramValues))
, m_paramLengths(std::move(rhs.m_paramLengths))
, m_paramFormats(std::move(rhs.m_paramFormats))
{
//rhs.m_paramValues.clear(); // make sure origin is empty, to prevent double deletion
}
{}
Params& Params::operator=(Params&& rhs)
{
if (&rhs != this) {
m_paramTypes = std::move(rhs.m_paramTypes);
m_paramValues = std::move(rhs.m_paramValues);
//rhs.m_paramValues.clear(); // make sure origin is empty, to prevent double deletion
m_paramLengths = std::move(rhs.m_paramLengths);
m_paramFormats = std::move(rhs.m_paramFormats);
}

View file

@ -153,7 +153,7 @@ int Result::cols() const
return PQnfields(result);
}
const char* const Result::getColName(int idx) const
const char * Result::getColName(int idx) const
{
return PQfname(result, idx);
}

View file

@ -116,9 +116,9 @@ namespace Pgsql {
int rows() const;
int cols() const;
const char* const getColName(int idx) const;
const char* getColName(int idx) const;
const char * val(int col, int row) const;
const char* val(int col, int row) const;
Value get(int col, int row) const;
Oid type(int col) const;
bool null(int col, int row) const;

View file

@ -54,3 +54,45 @@ Value::operator bool() const
return std::strcmp(m_val, "t") == 0;
}
//void operator<<(QString &s, const Value &v)
//{
// s = v.asQString();
//}
//void operator<<(QDateTime &l, const Value &v)
//{
// l = QDateTime::fromString(asQString(),
// "yyyy-MM-dd hh:mm:ss");
//}
//void operator<<(std::string &l, const Value &v)
//{
// l = v;
//}
//void operator<<(short &l, const Value &v)
//{
// l = (short)std::atoi(v.c_str());
//}
//void operator<<(int &l, const Value &v)
//{
// l = std::atoi(v.c_str());
//}
//void Pgsql::operator<<(Oid &l, const Value &v)
//{
// l = std::atoi(v.c_str());
//}
//void operator<<(__int64 &l, const Value &v)
//{
// l = std::strtoull(v.c_str(), nullptr, 10);
//}
//void operator<<(bool &l, const Value &v)
//{
// l = std::strcmp(v.c_str(), "t") == 0;
//}

View file

@ -13,6 +13,8 @@ namespace Pgsql {
public:
Value(const char *val, Oid typ);
QString asQString() const;
const char* c_str() const { return m_val; }
operator QString() const;
operator QDateTime() const;
operator std::string() const;
@ -21,12 +23,24 @@ namespace Pgsql {
operator Oid() const;
operator __int64() const;
operator bool() const;
private:
const char *m_val;
Oid m_typ;
};
// void operator<<(QString &s, const Value &v);
// void operator<<(QDateTime &l, const Value &v);
// void operator<<(std::string &l, const Value &v);
// void operator<<(short &l, const Value &v);
// void operator<<(int &l, const Value &v);
// void operator<<(Oid &l, const Value &v);
// void operator<<(__int64 &l, const Value &v);
// void operator<<(bool &l, const Value &v);
template <typename T>
void operator<<(T &s, const Value &v)
{
s = static_cast<T>(v);
}
} // end namespace Pgsql

View file

@ -336,6 +336,8 @@ void QueryTab::connectionStateChanged(ASyncDBConnection::State state)
case ASyncDBConnection::State::CancelSend:
iconname = ":/icons/16x16/document_yellow.png";
break;
case ASyncDBConnection::State::Terminating:
break;
}
tabwidget->setTabIcon(i, QIcon(iconname));
}

View file

@ -15,197 +15,202 @@
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPlainTextEdit" name="queryEdit"/>
</item>
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QWidget" name="">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPlainTextEdit" name="queryEdit"/>
</item>
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="addButton">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="removeButton">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QTableView" name="paramTableView">
<property name="alternatingRowColors">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="messageTab">
<attribute name="title">
<string>Messages</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>0</number>
<number>2</number>
</property>
<property name="topMargin">
<number>0</number>
<number>2</number>
</property>
<property name="rightMargin">
<number>0</number>
<number>2</number>
</property>
<property name="bottomMargin">
<number>0</number>
<number>2</number>
</property>
<item>
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="addButton">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="removeButton">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QTableView" name="paramTableView">
<property name="alternatingRowColors">
<item row="0" column="0">
<widget class="QTextEdit" name="messagesEdit">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="messageTab">
<attribute name="title">
<string>Messages</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QTextEdit" name="messagesEdit">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="explainTab">
<attribute name="title">
<string>Explain</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<item row="1" column="0">
<widget class="QTreeView" name="explainTreeView">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="showDropIndicator" stdset="0">
<bool>false</bool>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="indentation">
<number>10</number>
</property>
<property name="uniformRowHeights">
<bool>false</bool>
</property>
<attribute name="headerStretchLastSection">
<bool>false</bool>
</attribute>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lblTimes">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="logTab">
<attribute name="title">
<string>Log</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<item>
<widget class="QPlainTextEdit" name="edtLog"/>
</item>
</layout>
<widget class="QWidget" name="explainTab">
<attribute name="title">
<string>Explain</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="lblTimes">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QTreeView" name="explainTreeView">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="showDropIndicator" stdset="0">
<bool>false</bool>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="indentation">
<number>10</number>
</property>
<property name="uniformRowHeights">
<bool>false</bool>
</property>
<attribute name="headerStretchLastSection">
<bool>false</bool>
</attribute>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="logTab">
<attribute name="title">
<string>Log</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<item>
<widget class="QPlainTextEdit" name="edtLog"/>
</item>
</layout>
</widget>
</widget>
</widget>
</item>

View file

@ -7,8 +7,8 @@
ServerWindow::ServerWindow(MasterController *master, QWidget *parent)
: ASyncWindow(parent)
, m_masterController(master)
, ui(new Ui::ServerWindow)
, m_masterController(master)
{
ui->setupUi(this);

View file

@ -25,10 +25,7 @@ int main(int argc, char *argv[])
auto master_controller = std::make_unique<MasterController>();
master_controller->init();
int result = a.exec();
WSACleanup();
return result;

View file

@ -4,7 +4,7 @@
#
#-------------------------------------------------
CONFIG += c++11
CONFIG += c++14
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets sql
@ -12,12 +12,13 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets sql
TARGET = pglab
TEMPLATE = app
INCLUDEPATH += C:\prog\include C:\VSproj\boost_1_63_0
INCLUDEPATH += C:\prog\include C:\Prog\boost\include\boost-1_64
DEFINES += WIN32_LEAN_AND_MEAN NOMINMAX
LIBS += /LIBPATH:C:\VSproj\boost_1_63_0\stage\lib /LIBPATH:c:\prog\lib\ libpq.lib fmt.lib User32.lib ws2_32.lib
#LIBS += -LC:/prog/boost/lib -Lc:/prog/lib libpq.lib fmt.lib User32.lib ws2_32.lib
LIBS += -LC:/MINGW/LIB -LC:/PROG/LIB -lws2_32 -lpq
debug {
LIBS += c:\prog\lib\botand_imp.lib
LIBS += c:/prog/lib/botand_imp.lib
}
release {
@ -139,7 +140,7 @@ FORMS += mainwindow.ui \
RESOURCES += \
resources.qrc
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01
#QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../core/release/ -lcore
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../core/debug/ -lcore