On 06/02/2023 8:43 PM, Alexander Zhirov wrote:
Is it possible to collect all this from under mingw so that the linker
is not Microsoft, but `ld'?
Maybe. Keep in mind that mingw isn't the system toolchain, you'll
probably run into issues using it else where. You should really be using
MSVC.
We support the system toolchain solely pretty much.
So I just downloaded libpq from the site (64bit version for Windows,
15.1). https://www.enterprisedb.com/download-postgresql-binaries
Copied lib+bin directory into working directory from the zip file.
```sh
alpha@DESKTOP-RB97SA4 /tmp/test_libpq
$ tree -L 1
.
├── bin
├── lib
├── test.d
├── test.exe
└── test.obj
2 directories, 3 files
```
Source file:
```d
module test;
import std.stdio;
void main() {
writeln("start");
PGconn* conn = PQconnectdb("connection string");
assert(conn !is null);
PQfinish(conn);
writeln("end");
}
struct PGconn;
extern(C) {
PGconn* PQconnectdb(const char *conninfo);
void PQfinish(PGconn* conn);
}
```
Output:
```sh
alpha@DESKTOP-RB97SA4 /tmp/test_libpq
$ dmd -m64 lib/libpq.lib test.d
alpha@DESKTOP-RB97SA4 /tmp/test_libpq
$ PATH=$PATH:lib:bin ./test
start
end
```
I had to modify the PATH variable to setup the lib and bin directories
for DLL lookup (bash syntax for Cygwin).
Appears to work fine.