- PR -

LPCTSTRデータ型をVC#で受け取る

投稿者投稿内容
ino
会議室デビュー日: 2004/05/11
投稿数: 13
投稿日時: 2004-05-14 14:48
こんにちは。

VC++6.0で作成したEXEからのLPCTSTRデータ型の引数を受け取るC#のDLLを作成しています。

C#ではLPCTSTRデータ型が使えないので、どう受け取れは良いのかわかりません。

LPCTSTRは、Winnt.hで
#ifdef UNICODE
typedef LPCWSTR LPCTSTR;
#else
typedef LPCSTR LPCTSTR;
と宣言されていて、

LPCWSTRとLPCSTRは、それぞれ
typedef CONST WCHAR *LPCWSTR;
typedef LPCSTR LPCTSTR;
と宣言されているということなので、

VC#でLPCTSTRのかわりにcharなどで受け取るようにしたのですが、
EXEの実行時にエラーが出てしまいます。

どなたか、C#でのLPCTSTRデータ型の引数の受け取り方を教えていただけないでしょうか。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-05-14 15:03
引用:

C#ではLPCTSTRデータ型が使えないので、どう受け取れは良いのかわかりません。



VC++ での、その関数のプロトタイプ宣言を見せてください。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
ino
会議室デビュー日: 2004/05/11
投稿数: 13
投稿日時: 2004-05-14 15:28
VC++6.0のEXEのソースはわかりません。

VC++6.0のEXEがVC++6.0のDLLの
BOOL EditorCtrl::InitCtrl1(LPCTSTR Language,short Unit,LPCTSTR VersionInfo)
{
}
といったかんじのメソッドに値を渡していることだけしか分かりません。

このようなソースをC#に書き換えたいのですが。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-05-14 16:32
引用:

VC++6.0のEXEがVC++6.0のDLLの



その VC++ DLL と同じ仕様の DLL を C# で作りたいということですか?
であれば無理です。

C# ではレガシ DLL を作ることは出来ません。
ただし、COM コンポーネントならば C# でも作成可能です。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
ino
会議室デビュー日: 2004/05/11
投稿数: 13
投稿日時: 2004-05-14 17:19
一応、COMで作っているのですが、引数の型が違うことに引っかかっています。

引数の部分をどう書き換えたらよいのでしょうか?
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-05-14 17:35
諸農です。

引用:

一応、COMで作っているのですが、引数の型が違うことに引っかかっています。
引数の部分をどう書き換えたらよいのでしょうか?



COMのメソッドの引数であれば
BSTRになればよいのでは??
既存の呼び出し側も変える必要があるとは思いますが。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-05-17 09:36
[MarshalAs(UnmanagedType.???)] がヒントにならないかな?
ino
会議室デビュー日: 2004/05/11
投稿数: 13
投稿日時: 2004-05-18 14:40
情報ありがとうございます。
返信が遅れて申し訳ありません。

いただいた情報を元に試したいと思います。

ありがとうございます。

スキルアップ/キャリアアップ(JOB@IT)