Я пытаюсь создать dll, которая читает текстовый файл, чтобы заполнить 2d массив, а затем изменить этот массив по мере необходимости. Я использую графический интерфейс VB для доступа к нему. Общая программа представляет собой симулятор микромузы, в котором пользователь может настроить размещение стены в лабиринте 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';
}
}
Я хочу иметь возможность ввести две входные переменные в качестве индекса матрицы и добавить или вычесть стену из этого местоположения. Всякий раз, когда я пытаюсь вызвать функцию из VB, она отправляет мне сообщение: ограничение PInvoke не может возвращать варианты. Функция ничего не возвращает, поэтому я не понимаю ...
Вот заявление объявления в моей программе VB:
Private Declare Function wallfunction Lib "C:\Path\Path\testDLL.dll" (ByVal x As Integer, ByVal y As Integer)
Я знаю, что я не смогу вызывать функцию fread каждый раз, когда пользователь хочет изменить стену; Я просто пытаюсь заставить это работать один раз. Какие-нибудь мысли?