Reputation: 55
I am trying to modify an old plugin to create a new one (in C++ and Visual Studio 2019). When I compile I get the following error marking TEXT in red.
E0144: A value of type "const wchar_t *" cannot be used to initialize an entity of type LPTSTR
LPTSTR process_name = TEXT("rFactor2.exe");
module_address = GetModuleBase(process_name, pID);
I investigated and saw a similar post suggesting this:
LPTSTR process_name = foo(TEXT("rFactor2.exe"));
And now I get the following error:
E0020: identifier "foo" is not defined
Could someone tell me how can I create the variable in LPTSTR format (it's the type that GetModuleBase
expects)?
Upvotes: 2
Views: 2232
Reputation: 29975
LPTSTR
is defined as TCHAR*
. What you want is a const pointer. You can use LPCTSTR
, which is defined as TCHAR const*
:
LPCTSTR process_name = TEXT("rFactor2.exe");
If your function requires a non-const pointer, you can create a copy:
TCHAR process_name[] = TEXT("rFactor2.exe");
Note that life time of the string literal and the array are not the same.
it's the type that
GetModuleBase
expects
Considering you are working with legacy code, it is possible that your functions take non-const pointers and don't modify them. If you are certain about that and can't go ahead and fix those function signatures to be const-correct, you can use a type cast. Do this only as a last resort:
auto process_name = const_cast<LPTSTR>(TEXT("rFactor2.exe"));
Recommended reading:
Upvotes: 2
Reputation: 415
last thing where tstr's needed was windows millenium. Really you dont need its stuff
Upvotes: 0