April 02, 2023
Error: function `proxy.injector.RemoteLibraryFunction(void* hProcess, const(wchar)* lpModuleName, const(wchar)* lpProcName, void* lpParameters, ulong dwParamSize, void** ppReturn)` is not callable using argument
types `(void*, const(wchar)*, wchar[512], void*, int, void**)`

While writing this post i just remembered that i attempted a PR few years ago: https://github.com/dlang/dmd/pull/13366

This is always painful to read/decipher, can this error be improved?

At least colors/arrows to tell me wich argument(s) are wrong

Perhaps on a new line?

Unfortunately, I have no ideas how to improve it, anyone mind helping me?

Thanks!

April 03, 2023

On Sunday, 2 April 2023 at 13:43:59 UTC, ryuukk_ wrote:

>
Error: function `proxy.injector.RemoteLibraryFunction(void* hProcess, const(wchar)* lpModuleName, const(wchar)* lpProcName, void* lpParameters, ulong dwParamSize, void** ppReturn)` is not callable using argument
types `(void*, const(wchar)*, wchar[512], void*, int, void**)`

While writing this post i just remembered that i attempted a PR few years ago: https://github.com/dlang/dmd/pull/13366

This is always painful to read/decipher, can this error be improved?

At least colors/arrows to tell me wich argument(s) are wrong

Perhaps on a new line?

Unfortunately, I have no ideas how to improve it, anyone mind helping me?

Thanks!

I attempted to reproduce your issue using the following example code:

void RemoteLibraryFunction(
    void* hProcess,
    const(wchar)* lpModuleName,
    const(wchar)* lpProcName,
    void* lpParameters,
    ulong dwParamSize,
    void** ppReturn
);

void main()
{
    void* vp;
    const(wchar)* cwcp;
    wchar[512] wca;
    int n;
    void** vpp;

    RemoteLibraryFunction(vp, cwcp, wca, vp, n, vpp);
}

Attempting to compile this code with DMD v2.102.2 produced the following output:

example.d(18): Error: function `example.RemoteLibraryFunction(void* hProcess, const(wchar)* lpModuleName, const(wchar)* lpProcName, void* lpParameters, ulong dwParamSize, void** ppReturn)` is not callable using argument types `(void*, const(wchar)*, wchar[512], void*, int, void**)`
example.d(18):        cannot pass argument `wca` of type `wchar[512]` to parameter `const(wchar)* lpProcName`

Note the last line, which points out the specific argument that does not match. According to the changelog, that line was added in DMD v2.079.0:

https://dlang.org/changelog/2.079.0.html#argument-mismatch

So, unless you are using an extremely old D compiler, you should be seeing that line in your compiler's output.