LNK2019 error in the C++ interface
dokutoku
3729541-dokutoku at users.noreply.gitlab.com
Thu Sep 3 15:26:51 UTC 2020
I tried to use a function from a library written in C++ in D.
I've been trying to use it in D. But I got an error in LNK2019
and the build failed.
So I created a simple static library as follows and built it.
```cpp
#pragma once
#include <windows.h>
namespace static_test {
void str_test(LPCSTR str)
{
MessageBoxA(NULL, str, NULL, MB_OK);
}
void wstr_test(LPCWSTR str)
{
MessageBoxW(NULL, str, NULL, MB_OK);
}
void rect_test(RECT rect)
{
}
}
```
```d
import core.sys.windows.windows;
import std.utf;
extern (C++, "static_test") {
nothrow @nogc
extern void str_test(LPCSTR str1);
nothrow @nogc
extern void wstr_test(LPCWSTR str1);
nothrow @nogc
void rect_test(RECT rect);
}
void main()
{
str_test(toUTFz!(const char*)("test"));
// error LNK2019
wstr_test(toUTF16z("test"w));
// error LNK2019
rect_test(RECT.init);
}
```
The LNK2019 error still occurred.
I'm guessing that the reason for the error is that the type
declared in C++ is different from the type declared in D. But I'm
not sure how to fix it.
More information about the Digitalmars-d-learn
mailing list