DOBON.NET DOBON.NETプログラミング掲示板過去ログ

MLang.tlbの作り方(mlang.dll)

環境/言語:[WinXP VB.NET]
分類:[.NET]

お世話に成ります、emigennです。
どぼん!さんのメールマガジン「.NETプログラミング研究 第43号」で解説されている 文字コードを判別する方法の中の「IMultiLanguage2::DetectInputCodepageメソッドを使うための方法」を試そうとしているのですが肝心の「MLang.tlb」の作り方が良く解りません。

解説ではMIDL.EXEを使ってMLang.idlからMLang.tlbを作り、その後regtlib.exeを使って登録しなさい。との事ですが具体的にはどうすればいいのでしょう??

DOS窓で下記を試したのですが、エラーに成るし、此れだけでは多分ダメな様なきがするのですが?
C:\Program Files\Common Files\System\Mapi\1041\NT>midl /newtlb C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\MLang.Idl
出来ればステップでお教え頂けるとありがたいのですが、宜しくお願いします。
> 解説ではMIDL.EXEを使ってMLang.idlからMLang.tlbを作り、その後regtlib.exeを使って登録しなさい。との事ですが具体的にはどうすればいいのでしょう??

どのようなエラーが出て、そのエラーをどのように解釈し、どのような処置をとったのでしょうか?少なくともemigennさんの示されたコマンドでは、パスにスペースが入っており、その対策がなされていないようですが。
管理人さん、有難う御座います。

エラーに付いて改めて試みたDOS窓での記録です(プロムプトが前回と変わっていますが)
----------------------------------------------------
Setting environment for using Microsoft Visual Studio .NET 2003 tools.
(If you have another version of Visual Studio or Visual C++ installed and wish
to use its tools from the command line, run vcvars32.bat for that version.)

C:\Documents and Settings\Administrator>midl /newtlb C:\Program Files\Microsoft
Visual Studio .NET 2003\Vc7\PlatformSDK\Include\MLang.Idl
Microsoft (R) 32b/64b MIDL Compiler Version 6.00.0361
Copyright (c) Microsoft Corporation 1991-2002. All rights reserved.
midl : command line warning MIDL1009 : unknown argument ignored "Files\Microsoft
"
midl : command line warning MIDL1009 : unknown argument ignored "Visual"
midl : command line warning MIDL1009 : unknown argument ignored "Studio"
midl : command line warning MIDL1009 : unknown argument ignored ".NET"
midl : command line warning MIDL1009 : unknown argument ignored "2003\Vc7\Platfo
rmSDK\Include\MLang.Idl"
Processing C:\Program
Program
c1 : fatal error C1083: ソース ファイルを開けません。'C:\Program': No such file
or directory
midl : command line error MIDL1003 : error returned by the C preprocessor (2)
----------------------------------------------------
正直言って上記を見てもMLang.Idlが上手く認識されていないのかな?位しか予想が付かず、どんな動き・仕組みなのかはよく解りません。


>パスにスペースが入っており、その対策がなされていないようですが。
を元に、MLang.Idlをスペースの入らない場所に移動し、
midl /newtlb C:\temp\MLang.Idl でやってみた記録
----------------------------------------------------
Setting environment for using Microsoft Visual Studio .NET 2003 tools.
(If you have another version of Visual Studio or Visual C++ installed and wish
to use its tools from the command line, run vcvars32.bat for that version.)

C:\Documents and Settings\Administrator>midl /newtlb C:\temp\MLang.Idl
Microsoft (R) 32b/64b MIDL Compiler Version 6.00.0361
Copyright (c) Microsoft Corporation 1991-2002. All rights reserved.
Processing C:\temp\MLang.Idl
MLang.Idl
Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\PlatformSDK\in
clude\unknwn.idl
unknwn.idl
Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\PlatformSDK\in
clude\wtypes.idl
wtypes.idl
Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\PlatformSDK\in
clude\basetsd.h
basetsd.h
Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\PlatformSDK\in
clude\guiddef.h
guiddef.h
Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\PlatformSDK\in
clude\oaidl.idl
oaidl.idl
Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\PlatformSDK\in
clude\objidl.idl
objidl.idl
Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\PlatformSDK\in
clude\oaidl.acf
oaidl.acf
64 bit Processing C:\temp\MLang.Idl
MLang.Idl
64 bit Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\Platfor
mSDK\include\unknwn.idl
unknwn.idl
64 bit Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\Platfor
mSDK\include\wtypes.idl
wtypes.idl
64 bit Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\Platfor
mSDK\include\basetsd.h
basetsd.h
64 bit Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\Platfor
mSDK\include\guiddef.h
guiddef.h
64 bit Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\Platfor
mSDK\include\oaidl.idl
oaidl.idl
64 bit Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\Platfor
mSDK\include\objidl.idl
objidl.idl
64 bit Processing C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\Platfor
mSDK\include\oaidl.acf
oaidl.acf
----------------------------------------------------

結果 C:\Documents and Settings\Administrator に
MLang.h と
MLang.tlb が作成されていました。

midl /newtlbのスイッチはこれでよいのでしょうか?MLang.tlbは正しく出来ているのでしょうか?Platform SDK(Windows Server 2003 Family SP1ではない方)が手元に有ったので見て此れかな?と当りを付けて使用しました。(間口が広すぎて正直よく解っていません)

又、regtlib.exe に付いては検索するとウイルスがらみの情報が多く、使い方についての情報を見付けることが出来ません(MSDNでも検索に掛からない)何処に情報が有るのでしょうか?
単に regtlib C:\Documents and Settings\Administrator\MLang.tlb とすれば良いのでしょうか?(空白が入っていますが)

手取り足取りに成りますが宜しくお願いします。(長文失礼しました)
おせわになります、その後の追試です。
試しにやってみました。(MLang.tlbをC:\Program Files\Microsoft
Visual Studio .NET 2003\Vc7\PlatformSDK\Includeにコピー)

Setting environment for using Microsoft Visual Studio .NET 2003 tools.
(If you have another version of Visual Studio or Visual C++ installed and wish
to use its tools from the command line, run vcvars32.bat for that version.)

C:\Program Files\Common Files\System\Mapi\1041\NT>cd C:\Program Files\Microsoft
Visual Studio .NET 2003\Vc7\PlatformSDK\Include

C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include>regtlib MLang.tlb
Registration of MLang.tlb successful.

参照の追加 COM で MultiLanguage Object Model として参照できました
これでやってみます。

DOBON.NET | プログラミング道 | プログラミング掲示板