0

テキストファイルを読み取って2次元配列にデータを入力し、必要に応じてその配列を変更するdllを構築しようとしています。VB GUI を使用してアクセスしています。プログラム全体は、ユーザーが 5x5 迷路の壁の配置、マウスの開始位置と目標の配置をカスタマイズし、検索アルゴリズム (dll) で解決できるマイクロマウス シミュレーターです。私のdll内のコードは次のとおりです。

/*testDLL.cpp*/

#include "testDLL.h"
#include <stdio.h>

FILE *maze;

char mazearray[12][12];

void _stdcall wallfunction(int x, int y){

    maze = fopen ("C:\Users\Public\Documents\5x5mazedefault.txt", "r");
    fread (mazearray, sizeof(mazearray), 1, maze);
    fclose(maze);
    if (mazearray[x][y] == 'X'){
            mazearray[x][y] = ' ';
    }
    else if (mazearray[x][y] == ' '){
        mazearray[x][y] = 'X';
    }
}

行列のインデックスとして 2 つの入力変数を入力し、その場所から壁を追加または削除できるようにしたいと考えています。VB からこの関数を呼び出そうとすると、「PInvoke 制限はバリアントを返すことができません」というメッセージが表示されます。関数は何も返さないので、わかりません...

私のVBプログラム内の宣言ステートメントは次のとおりです。

Private Declare Function wallfunction Lib "C:\Path\Path\testDLL.dll" (ByVal x As Integer, ByVal y As Integer)

ユーザーが壁を変更するたびに fread 関数を呼び出すことができないことは承知しています。私はこれを最初に一度機能させようとしています。何かご意見は?

4

1 に答える 1

1

VB の Declare ステートメントで Function を Sub に変更します。これは、C++ 関数が void を返すためです。

于 2011-04-17T23:36:24.377 に答える