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);
}
のようにするとコンパイラは通るのですが、実行時にアクセス違反がおこります。
どのようにしたら文字列のポインタを返すことができるのでしょうか。
おねがいします。
> char * __declspec(dllexport) __stdcall encode(char *word)
__declspecはstaticとかと同じ扱いなので,
__declspec(dllexport) char * __stdcall encode(char *word)
とするか,
char __declspec(dllexport) * __stdcall encode(char *word)
のようにする必要があります。
__declspec(dllexport) char* __stdcall encode(char *word);
でしょうね。
#サンプル等を見ても__declspecは宣言の先頭に書かれてますけど…
後者の形式はポインタを返しているのではなく、
引数で与えられたポインタが指す場所に書き込む処理です。
呼出側で書き込む場所を用意していますか?
ありがとうございます!
解決しました。初歩的なことでほんと申し訳ありません。