Файловый ввод / вывод в C ++ DLL? - PullRequest
0 голосов
/ 18 апреля 2011

Я пытаюсь создать 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 каждый раз, когда пользователь хочет изменить стену; Я просто пытаюсь заставить это работать один раз. Какие-нибудь мысли?

1 Ответ

1 голос
/ 18 апреля 2011

Измените функцию на Sub в вашем операторе объявления в VB. Это потому, что ваша функция C ++ возвращает void.

...