こんにちは。
VC++ 6.0 のSDK (非MFC)でウィンドウズプログラミングをしています。
UNICODEでコンパイルしたいと思い、
_UNICODE, UNICODE を定義し、_MBSC を定義から除外し、
エントリポイントシンボルにwWinMainCRTStartupを指定しました。
前々から、TEXTマクロの使用とTCHAR, LPTSTR, LPCTSTR の使用を心がけて
いたのですが、fopen/fgets と _makepath/_splitpath と GetProcAddress が
対応できていないようで、コンパイルが通りません。
WCHAR.H を定義すると、 _tfopen や _tmakepath が使えるようになると
ネットに書いてあったのですが、定義しても
「見つからない」とコンパイルエラーになってしまいます。
(WCHAR.Hを見て見ても、なぜか_tfopen や _tmakepathはありませんでした。
ですで、コンパイルが通らないのは当たり前なのですが、
ネットのサンプルとどう違うのか分かりません)
#define VC_EXTRALEAN
#include <wchar.h>
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <exception>
#include <typeinfo>
#include <stdexcept>
#include <new>
#include <algorithm>
#include <map>
#include <set>
#include <list>
#include <stack>
#include <string>
#include <vector>
こんな感じで使っておりますが、間違っていること・足りていないこと
などご存知でしたらご教示下さい。
宜しくお願いします。
ちなみに std::string は
namespace std {
typedef basic_string<TCHAR> tstring;
}
として、tstring を使うことで回避致しました。
wchar.hじゃなくてtchar.hじゃありませんでしたっけ。
GetProcAddress はもともと LPCSTR を引数に取るものしか存在しません。
うー様、subaru様、ありがとうございます。
tchar.h でした!!
なぜか VC6 UNICODE などで検索しても見つけられませんでした。
探し方が下手だったようです。ありがとうございました。
> GetProcAddress はもともと LPCSTR を引数に取るものしか
これについては、みなさんどう対処しているのでしょうか?
※自作しているというサンプルは見つけられました
よろしくお願いします。
すみません。
普通は、GetProcAddress に TEXT() を使用しなければいいんですよね。
ただ私の場合はエクスポート関数名を UNICODE で受け取っておりまして、
そこは変更出来ませんので、
WideCharToMultiByte
を使って変換するということになるのですね。
すみません、どうもありがとうございました!
ツイート | ![]() |