外部ライブラリのメソッドを使用しようとすると、読み取り/書き込みアクセスエラーが発生する

bigGstatus

ライブラリから次の実装を使用しようとしています

ここに画像の説明を入力してください

C ++

int CALLBACK xCallback(long xmitlen, int buflen, char *buf, long flen)
{
    return 0;
}

extern "C"  __declspec(dllexport) int __stdcall TXFIlestransfer(int port, string fileName);

__declspec(dllexport) int __stdcall TXFIlestransfer(int port, string fileName)
{
     int ret;

     char *test = &fileName[0];

     ret = sio_FtKermitTx(port, test, xCallback, 27);

     return ret;
}

これをインポートしてC#で使用し、System.AccessViolationException: '保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています。

ここに画像の説明を入力してください

このエラーを解決するための助けをいただければ幸いです。

カントリースピーカー

sio_FtKermitTxC ++ dll(Mydll.dll関数をシミュレートして、プログラムをテストしました

int sio_FtKermitTx (int port, char *fname, int (CALLBACK *func) (long xmitlen, int buflen, char *buf, long flen), int key)
{
    return 5;
}

そして、空の体でも、私はあなたと同じ問題を抱えています。

いくつかの調査の結果、問題は、何らかの理由(たとえば、Unicode /マルチバイト構成、または単に複雑なオブジェクトの共有が実装が難しいため)のコードstringC#オブジェクトを使用しているという事実に起因していることに気付きましたC++

解決策:オブジェクトをプリミティブ型に
置き換えるstringことでchar、すべてが正しく機能します。

C#コード:

using System.Runtime.InteropServices;
namespace MyProgramme
{
    class Test
    {
        // Import C++ DLL
        [DllImport("Mydll.dll", CallingConvention = CallingConvention.Cdecl)]
        public static extern int TXFIlestransfer(int i, char[] filename);
        //public static extern int TXFIlestransfer(int i, string filename); // this crash

        static void RunTest(/*LoadFilterEVENTMessage msg*/)
        {
            string c = "ABC";
            char[] char_arr = c.ToCharArray();
            int i = TXFIlestransfer(3, char_arr);
            // int i = TXFIlestransfer(3, c); string version crash

            string s = i.ToString();
            MessageBox.Show(s);
        }

        /* Methods in DLL being used below  */
        public static void Main()
        {
            RunTest();
        }
    };
}

C ++ DLLコード(Mydll.dll):

extern "C" __declspec(dllexport) int TXFIlestransfer(int port, char fileName[])
{
    int ret;
    char *test = &fileName[0];
    ret = sio_FtKermitTx(port, test, xCallback, 27);
    return ret;
}

とにかく、sio_FtKermitTx関数はchar*inパラメーターを受け入れるので、TXFIlestransferパラメーターをからstring変更してchar[]も問題はありません。

結果:
C#プログラムを実行すると、次のようになります。

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

DeviceIoControlIOCTL_STORAGE_EJECT_MEDIAを使用してCDRomドライブを取り出しようとしていますが、場所の書き込みにエラーアクセス違反が発生します

分類Dev

WindowsとLinuxの両方で読み取り+書き込みアクセスを使用して外付けハードドライブを暗号化する

分類Dev

「ディスク 'hd0'の外部で読み取りまたは書き込みを試みました」というエラーが発生し、ブート修復で問題が解決しない場合はどうすればよいですか?

分類Dev

ルートアクセスを使用して修正できないことを除いて、ブーストライブラリをリンクするときに発生する「共有ライブラリの読み込み中にエラーが発生しました」

分類Dev

組み込みクラスのメソッド属性にアクセスしようとするとエラーが発生するのに、同じ組み込み関数属性ではないのはなぜですか

分類Dev

カメラから直接ファイルをアップロードし、書き込みまたは読み取りのアクセス許可なしでマルチパートとして送信するにはどうすればよいですか?

分類Dev

4より大きいマップを読み込もうとするとエラーが発生します

分類Dev

Amazon s3:「パブリックアクセスをブロックする」設定により、署名されたURLを使用したパブリック読み取りプライベート書き込みが可能になります

分類Dev

Picassoライブラリを読み込もうとするとエラーが発生する

分類Dev

.netアプリケーションからプログラムでGraphREST APIにアクセスしようとすると、「appIdのディレクトリ読み取りアクセスを確認できません」というエラーが発生します

分類Dev

sigsegvを使用してメモリの読み取りと書き込みをトラップする方法

分類Dev

クロムを削除しようとすると、読み取り専用のファイルシステムエラーが発生します

分類Dev

そのようなメソッドはありませんJAXRS CXFWebサービスにアクセスするときにエラーが発生します

分類Dev

ピアによって接続がリセットされました:オブジェクトを送信しようとしているときにソケット書き込みエラーが発生しました

分類Dev

growisofsを使用しているときに、DVD書き込みプロセスの最後に「/ dev / dvdを排他的に開こうとするとエラーが発生しました」というメッセージが表示される

分類Dev

USBフラッシュドライブにddを書き込むと、大量の読み取りが発生します

分類Dev

読み取り専用モードで読み取り/書き込みアクセス権を持つネットワークドライブを参照するにはどうすればよいですか?

分類Dev

Rubyを使用して大きなファイルをS3にアップロードすると、メモリ不足エラーが発生します。チャンクで読み取ってアップロードする方法は?

分類Dev

<<と>>をオーバーロードして、クラスのファイルの書き込みと読み取りに使用する方法

分類Dev

リストにアイテムを追加すると、エラーが発生します。リストアイテムの更新に無効なデータが使用されました。更新しようとしているフィールドは読み取り専用である可能性があります

分類Dev

Gpartedメッセージを修正するにはどうすればよいですか:セクターxxxでブロックを読み取っているときにエラーが発生しましたか?

分類Dev

Excelドキュメントのセルの範囲を読み取るとエラーが発生します

分類Dev

なぜPythonは外部スコープから「リスト」オブジェクトを読み取ることができるのに、「int」オブジェクトに対して「割り当て前に参照」エラーが発生するのですか?

分類Dev

CSVデータファイルから読み込み、必要なものだけを取り込もうとするとエラーが発生する

分類Dev

S3バケットから画像(ファイル)をレンダリングする方法は、フロントエンドですべてのパブリックアクセスをブロックしました(プライベート書き込み、プライベート読み取り)

分類Dev

KStream:Avroレコードの読み取りと書き込み中にエラーが発生しました

分類Dev

メモリの読み取り/書き込みアクセスエラー例外

分類Dev

ExcelVBAの埋め込みWord文書で検索/置換メソッドを使用するとエラーが発生します

分類Dev

Windowsユニバーサルブランクアプリのデザイナーを読み込もうとするとSystem.Exceptionが発生しますか?

Related 関連記事

  1. 1

    DeviceIoControlIOCTL_STORAGE_EJECT_MEDIAを使用してCDRomドライブを取り出しようとしていますが、場所の書き込みにエラーアクセス違反が発生します

  2. 2

    WindowsとLinuxの両方で読み取り+書き込みアクセスを使用して外付けハードドライブを暗号化する

  3. 3

    「ディスク 'hd0'の外部で読み取りまたは書き込みを試みました」というエラーが発生し、ブート修復で問題が解決しない場合はどうすればよいですか?

  4. 4

    ルートアクセスを使用して修正できないことを除いて、ブーストライブラリをリンクするときに発生する「共有ライブラリの読み込み中にエラーが発生しました」

  5. 5

    組み込みクラスのメソッド属性にアクセスしようとするとエラーが発生するのに、同じ組み込み関数属性ではないのはなぜですか

  6. 6

    カメラから直接ファイルをアップロードし、書き込みまたは読み取りのアクセス許可なしでマルチパートとして送信するにはどうすればよいですか?

  7. 7

    4より大きいマップを読み込もうとするとエラーが発生します

  8. 8

    Amazon s3:「パブリックアクセスをブロックする」設定により、署名されたURLを使用したパブリック読み取りプライベート書き込みが可能になります

  9. 9

    Picassoライブラリを読み込もうとするとエラーが発生する

  10. 10

    .netアプリケーションからプログラムでGraphREST APIにアクセスしようとすると、「appIdのディレクトリ読み取りアクセスを確認できません」というエラーが発生します

  11. 11

    sigsegvを使用してメモリの読み取りと書き込みをトラップする方法

  12. 12

    クロムを削除しようとすると、読み取り専用のファイルシステムエラーが発生します

  13. 13

    そのようなメソッドはありませんJAXRS CXFWebサービスにアクセスするときにエラーが発生します

  14. 14

    ピアによって接続がリセットされました:オブジェクトを送信しようとしているときにソケット書き込みエラーが発生しました

  15. 15

    growisofsを使用しているときに、DVD書き込みプロセスの最後に「/ dev / dvdを排他的に開こうとするとエラーが発生しました」というメッセージが表示される

  16. 16

    USBフラッシュドライブにddを書き込むと、大量の読み取りが発生します

  17. 17

    読み取り専用モードで読み取り/書き込みアクセス権を持つネットワークドライブを参照するにはどうすればよいですか?

  18. 18

    Rubyを使用して大きなファイルをS3にアップロードすると、メモリ不足エラーが発生します。チャンクで読み取ってアップロードする方法は?

  19. 19

    <<と>>をオーバーロードして、クラスのファイルの書き込みと読み取りに使用する方法

  20. 20

    リストにアイテムを追加すると、エラーが発生します。リストアイテムの更新に無効なデータが使用されました。更新しようとしているフィールドは読み取り専用である可能性があります

  21. 21

    Gpartedメッセージを修正するにはどうすればよいですか:セクターxxxでブロックを読み取っているときにエラーが発生しましたか?

  22. 22

    Excelドキュメントのセルの範囲を読み取るとエラーが発生します

  23. 23

    なぜPythonは外部スコープから「リスト」オブジェクトを読み取ることができるのに、「int」オブジェクトに対して「割り当て前に参照」エラーが発生するのですか?

  24. 24

    CSVデータファイルから読み込み、必要なものだけを取り込もうとするとエラーが発生する

  25. 25

    S3バケットから画像(ファイル)をレンダリングする方法は、フロントエンドですべてのパブリックアクセスをブロックしました(プライベート書き込み、プライベート読み取り)

  26. 26

    KStream:Avroレコードの読み取りと書き込み中にエラーが発生しました

  27. 27

    メモリの読み取り/書き込みアクセスエラー例外

  28. 28

    ExcelVBAの埋め込みWord文書で検索/置換メソッドを使用するとエラーが発生します

  29. 29

    Windowsユニバーサルブランクアプリのデザイナーを読み込もうとするとSystem.Exceptionが発生しますか?

ホットタグ

アーカイブ