私は実行されているコンピュータのホスト名を単に出力するWin32デスクトップアプリケーションを作成しようとしています。私はWSADATA構造体とうまく動作するgethostname()を使ってそのようなC++コンソールアプリケーションを作成することができました。しかし、私がWin32デスクトップアプリケーションでそれらを実装しようとすると、まったく動作しません。VS 2017 C++ Win32アプリケーションでgethostnameの結果をどのように出力するのですか?
エラーメッセージを見ると、TCHAR - char互換性/変換の問題を示しています...このアプリケーションを動作させる方法に関する提案はありますか?
win32project.cpp:
#include "stdafx.h"
...
case WM_PAINT:
{
PAINTSTRUCT ps;
TCHAR szPath[128] = _T("");
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
gethostname(szPath, sizeof(szPath));
WSACleanup();
HDC hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 10, 10, szPath, _tcslen(szPath));
EndPaint(hWnd, &ps);
}
break;
...
stdafx.hをの含有量が上記win32project.cppに含ま:あなたread the documentation(または単に関数の宣言を見て)場合
#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN
// Windows Header Files:
#include <windows.h>
// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
// additional headers
#include <iostream>
#include <string>
#include <Winsock2.h>
#pragma comment(lib, "Ws2_32.lib")
*エラーメッセージを見てください* - それらを投稿してくださいエラーメッセージ。また、アプリケーションがUnicodeの場合、 'TCHAR'は' char'ではありません。 – PaulMcKenzie
これをどうしたらいいか分かりません。コードはコンパイルされませんか?コードはコンパイルされますが、実行時に意図したとおりに動作しませんか?前者については、エラーメッセージを読んで考えてください。後者については、プログラムをデバッグしてください。 –
真剣にも、私たちは21世紀に住んでいます。既に 'TCHAR'を削除してください。これは、Windows 95ラインからWindows NTラインに移行するヘルパーマクロでした。 – MSalters