お世話になります
たびたび申し訳ないですが
C#でDLLとリンクするプログラムを作成してます。
その時に、DLLの関数へポインタを渡すんですが
おそらくその時に、アクセス違反が起きてます。
以下ソースです。
引数として渡されるStringには数字が入ってます。
unsafe public short import(String s)
{
short ret = 999;
short no;
uint brate;
char bit = '8';
char Parity = 'N';
no = short.Parse(s);
brate = uint.Parse("9600");
// 問題の箇所
ret = dllImport(no, brate, &bit, &Parity);
return ret;
}
これは私の予想なのですが
上記で宣言した char bit、 char Parity がpublicではないので
DLL内で参照するときに、エラーが出てしまうのではないかと考えて
char bit、 char Parity をどうにかpublicにできないか試したのですが
調べてもどうも方法がわからず、相談させていただきました。
そもそもpublicにしたところで、エラーが出なくなるか不明ですし
根本の原因がわかりません。
少ない情報で大変恐縮ですが
お分かりになる方、ご教授お願い致します。
No.2ベストアンサー
- 回答日時:
>dllImport
DllImportではないですか?
だとすると、使い方が全然違います。
第一、関数のエントリポイントは何処で
宣言したんですか?
因みに、DLLには変数の値かアドレスが
渡るので、変数自体がpublicかどうかは
関係がありません。呼び出し元が参照
できるものであれば何でもよいのです。
ご回答ありがとうございます
やはりpublicは関係ないですか・・
もう少し調べてみます。
dllImportは関数の名前を私が書き換えたものです
DllImportについては掲載し忘れておりました。
ご迷惑おかけします
No.1
- 回答日時:
C#でポインタを使ったことはないので解決策はわかりませんが(そもそもDLLの関数がどんなものかも書かれてないし)
>上記で宣言した char bit、 char Parity がpublicではないので
>DLL内で参照するときに、エラーが出てしまうのではないかと考えて
>char bit、 char Parity をどうにかpublicにできないか試したのですが
>調べてもどうも方法がわからず、相談させていただきました。
変数のbit,Parityがpublicでないことはまったく関係ないはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# C言語について コマンドラインで >変数 12.00 (char型) と、小数点付きの値を共用体に渡 1 2022/04/22 16:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のintとcharの違いってな...
-
小数点入りの文字列をfloat型に...
-
CStringからchar*への型変換に...
-
C言語のプログラムについてです
-
SubStringの使い方について
-
ASCIIコードへの変換方法
-
strcat関数を自作したいです
-
char*を初期化したいのですが
-
C言語にて構造体のメンバがNULL...
-
文字列の途中から途中までを抽出
-
簡易版smtpクライアント(メール...
-
char型にint型の数値を代入する。
-
ポインタの配列でエラーが出て...
-
char *name1[4] とchar name2[]...
-
警告 : 問題のあるポインタの変換
-
fgetsで読み込んだ値のvector処理
-
char 文字列型 の表現範囲が-12...
-
C言語 配列の長さの上限
-
セグメントエラー
-
fopne で失敗する原因
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
C言語のintとcharの違いってな...
-
小数点入りの文字列をfloat型に...
-
new charとnew char[N]の違いは?
-
const char* s1とただのchar s1...
-
DWORDとcharの変換
-
strcat関数を自作したいです
-
C++17で、unsigned char * 配列...
-
文字列内の数字削除
-
エクセルのMID関数は、C言語では?
-
char 文字列型 の表現範囲が-12...
-
char型にint型の数値を代入する。
-
C言語を用いた環境変数の作成/...
-
動的メモリの初期化方法について。
-
fstream型オブジェクトを関数の...
-
C言語のプログラムについてです
-
文字列の途中から途中までを抽出
-
C言語:小文字を大文字に変換す...
おすすめ情報