vc++ 6.0 でUNICODEでコンパイルするには

解決


LIS  2009-07-16 21:16:34  No: 70627  IP: 192.*.*.*

こんにちは。
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 を使うことで回避致しました。

編集 削除
うー  2009-07-16 23:46:20  No: 70628  IP: 192.*.*.*

wchar.hじゃなくてtchar.hじゃありませんでしたっけ。

編集 削除
subaru  2009-07-17 01:11:40  No: 70629  IP: 192.*.*.*

GetProcAddress はもともと LPCSTR を引数に取るものしか存在しません。

編集 削除
LIS  2009-07-17 23:55:08  No: 70630  IP: 192.*.*.*

うー様、subaru様、ありがとうございます。

tchar.h でした!!
なぜか VC6 UNICODE などで検索しても見つけられませんでした。
探し方が下手だったようです。ありがとうございました。

> GetProcAddress はもともと LPCSTR を引数に取るものしか

これについては、みなさんどう対処しているのでしょうか?
※自作しているというサンプルは見つけられました

よろしくお願いします。

編集 削除
LIS  2009-07-18 00:40:28  No: 70631  IP: 192.*.*.*

すみません。

普通は、GetProcAddress に TEXT() を使用しなければいいんですよね。

ただ私の場合はエクスポート関数名を UNICODE で受け取っておりまして、
そこは変更出来ませんので、
WideCharToMultiByte
を使って変換するということになるのですね。

すみません、どうもありがとうございました!

編集 削除