Windows API: lld-link: error: undefined symbol: GetUserNameA
BoQsc
vaidas.boqsc at gmail.com
Sat Aug 19 13:37:57 UTC 2023
Today I've tried to use Windows API once again and encountered
very time consuming case.
It's been a long time since the last time I used Windows API.
This time I've had an idea that it would be interesting to get
thread associated username using Windows API. So after some time
while trying to come up with something that might seemingly work.
I've encountered this error:
### Error
```
C:\Users\Windows10\Desktop\interpreter>dmd WindowsGetUserName.d
lld-link: error: undefined symbol: GetUserNameA
>>> referenced by WindowsGetUserName.obj:(_Dmain)
Error: linker exited with status 1
```
### The Code
```D
import std.stdio;
import core.sys.windows.windows;
import std.conv;
void main() {
char[256] userName; // Buffer to store the user name
DWORD userNameSize = userName.length; // Size of the buffer
// Call GetUserName to retrieve the user name
if (GetUserNameA(userName.ptr, &userNameSize)) {
// Successfully retrieved the user name
writeln("Logged-in user name: ", to!string(userName[0 ..
userNameSize]));
} else {
// Failed to retrieve the user name
int error = GetLastError();
writeln("GetUserName failed with error code: ", error);
}
}
```
### 1. Solution
Remember to link **advapi32.lib**
* `dmd WindowsGetUserName.d -Ladvapi32.lib`
* `rdmd -Ladvapi32.lib WindowsGetUserName.d`
### 2. Solution
Remember to include `pragma` into your source code and specify
`advapi32.lib`
```
import std.stdio;
import core.sys.windows.windows;
import std.conv;
pragma(lib, "advapi32.lib");
void main() {
char[256] userName; // Buffer to store the user name
DWORD userNameSize = userName.length; // Size of the buffer
// Call GetUserName to retrieve the user name
if (GetUserNameA(userName.ptr, &userNameSize)) {
// Successfully retrieved the user name
writeln("Logged-in user name: ", to!string(userName[0 ..
userNameSize]));
} else {
// Failed to retrieve the user name
int error = GetLastError();
writeln("GetUserName failed with error code: ", error);
}
}
```
More information about the Digitalmars-d-learn
mailing list