PostgreSQL C++ API получает ошибку LNK1107: недопустимый или поврежденный файл: невозможно прочитать по адресу 0x2E8

Я пробую libpqxx и pg_bulkload для массовой загрузки данных C++ из моего приложения Simple C#. Потому что эти две библиотеки на моем ПК окончательно не поддерживаются. Теперь я создаю новый простой проект DLL с собственными методами PostgreSQL libpq.

CPPApp.h

#pragma once  

#ifdef CPPAPP_EXPORTS
#define CPPAPP_API __declspec(dllexport)
#else
#define CPPAPP_API __declspec(dllimport)
#endif  

#include "libpq-fe.h"

extern CPPAPP_API PGconn* conn;

#ifdef __cplusplus
CPPAPP_API extern "C" {
#endif  

    void OpenDb(const char* connStr);

    void CloseDb(void);

    int getVersion(void);

#ifdef __cplusplus
}
#endif

CPPApp.cpp

 #include "stdafx.h"
#include "CPPApp.h" 
#include <iostream> 
using namespace std;

CPPAPP_API PGconn* conn = nullptr;

void OpenDb(const char* connStr)
{
    conn = PQconnectdb(connStr);

    if (PQstatus(conn) != CONNECTION_OK)
    {
        cout << "Connection to database failed." << endl;
        CloseDb();
    }

    cout << "Connection to database - OK" << endl;

}

void CloseDb(void)
{
    PQfinish(conn);
}

int getVersion(void)
{
    int version = PQserverVersion(conn);

    cout << "PostgreSQL version is " << version << endl;

    return version;
}

Ошибка: ошибка LNK1107: недопустимый или поврежденный файл: невозможно прочитать по адресу 0x2E8

Могу ли я решить эту проблему?


person Elyor    schedule 14.06.2014    source источник


Ответы (1)


Эта ошибка обычно возникает, когда вы пытаетесь скомпоновать DLL (в данном случае это будет libpq.dll) вместо библиотеки (libpq.lib).

Предположим, вы загрузили PostgreSQL для Windows из предварительно скомпилированных двоичных файлов. lib внутри каталога установки с libpq.lib. Это файл, который вы хотите указать в качестве внешней библиотеки для вашего проекта Visual Studio.

person Daniel Vérité    schedule 14.06.2014
comment
Хорошо! Спасибо, я решил эту ошибку. Следующая ошибка - ошибка LNK1120: 1 неразрешенные внешние? Спасибо за ответ. - person Elyor; 14.06.2014