dllで文字列を取得 – プログラミング – Home

通知
すべてクリア

[解決済] dllで文字列を取得


taktak
 taktak
(@taktak)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

c++初心者のtaktakでよろしくご教授お願いします。
vbでdllを呼び出し(Declare Function)、引数として整数値(Long型)を渡します。
結果(戻り値)として、文字列(String型)を取得したいのですが?
現在dllを作成していますが、どうも文字列をreturnで返すところで、コンパイルエラーが発生
します。

vb側の例)vbでdll呼び出し、ret=get_message(1)で、retにテストを戻せるようなdllを考
えています。

dll開発途中の構文
MESSPC_API __stdcall get_message(int cnt)
{
static char *retValue;
switch (cnt){
case 1:retValue = テスト;
break;
}
return retValue;
}


引用未解決
トピックタグ
いもちぃ
 いもちぃ
(@いもちぃ)
ゲスト
結合: 23年前
投稿: 70
 

設計的にみて妥当な設計かどうか疑問があります。
通常文字列を扱う際には、dllの関数をコールする前にバッファを用意しておいて、
そのポインターをパラメータに設定してやります。(要するにバッファの先頭
アドレスを渡す)
dllの関数側ではそのバッファに文字列を書き込んでやります。

この設計ではだめなのでしょうか。
初心者と公言されているので、定石の回答をしてみました。

なお、VBの文字列とVC++の文字列の互換性を保つことをお忘れなく。


返信引用
ワルツ
 ワルツ
(@ワルツ)
ゲスト
結合: 23年前
投稿: 21
 

少なくとも、戻り値の型を記述するべきでは。
コンパイルエラーをなくすには。

まあ、実際はいもちぃさんがおっしゃるようにしたほうがいいと思いますけど。


返信引用
taktak
 taktak
(@taktak)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

ご回答ありがとうございます。

設計的にみて妥当な設計かどうか疑問があります。
通常文字列を扱う際には、dllの関数をコールする前にバッファを用意しておいて、
そのポインターをパラメータに設定してやります。(要するにバッファの先頭
アドレスを渡す)
dllの関数側ではそのバッファに文字列を書き込んでやります。

↑↑↑↑↑↑↑↑↑
すみませんが、この場合はどのような記述をすれば宜しいのでしょうか。
ご教授お願いします。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

プロトタイプ 宣言
void get_message(int ,char *);

呼び出し側
void main(void)
{
int cnt;
char message[128];
cnt = 1;
get_message(cnt,message)

}

呼び出される側

void get_message(int cnt,char *msg)
{
switch (cnt){
case 1:msg = テスト;
break;
}
}
こんなかんじ 多少構文間違っていたらごめんなさい


返信引用
taktak
 taktak
(@taktak)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

無事解決致しました。
ご教授くださった皆さま、どうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました