DLLの戻り値にポインタを使いたいのですができません – プログラミング – Home

DLLの戻り値にポインタを使いたいので...
 
通知
すべてクリア

[解決済] DLLの戻り値にポインタを使いたいのですができません


F
 F
(@F)
ゲスト
結合: 22年前
投稿: 9
Topic starter  

DLLを使ってポインタの文字列を戻り値としたいのですがうまくいきません。

char * __declspec(dllexport) __stdcall encode(char *word)
{
.....
.....
}

のようにすると戻り値char *の部分でエラーが起こってしまったので、

void __declspec(dllexport) __stdcall encode(char *word, char *cryptogram)
{
......
......
}

のようにしました。
しかし

void __declspec(dllexport) __stdcall encode(char *word, char *cryptogram)
{
char C1[64];
Init(C1) //C1に文字列を格納する処理
strncat(cryptogram, C1, 64);
}

のようにするとコンパイラは通るのですが、実行時にアクセス違反がおこります。
どのようにしたら文字列のポインタを返すことができるのでしょうか。
おねがいします。


引用未解決
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

> char * __declspec(dllexport) __stdcall encode(char *word)

__declspecはstaticとかと同じ扱いなので,

__declspec(dllexport) char * __stdcall encode(char *word)

とするか,

char __declspec(dllexport) * __stdcall encode(char *word)

のようにする必要があります。


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

__declspec(dllexport) char* __stdcall encode(char *word);
でしょうね。
#サンプル等を見ても__declspecは宣言の先頭に書かれてますけど…

後者の形式はポインタを返しているのではなく、
引数で与えられたポインタが指す場所に書き込む処理です。
呼出側で書き込む場所を用意していますか?


返信引用
F
 F
(@F)
ゲスト
結合: 22年前
投稿: 9
Topic starter  

ありがとうございます!
解決しました。初歩的なことでほんと申し訳ありません。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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