【问题标题】:File I/O in a C++ DLL?C++ DLL 中的文件 I/O?
【发布时间】:2011-08-07 12:21:50
【问题描述】:

我正在尝试构建一个读取文本文件以填充二维数组的 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';
    }
}

我希望能够输入两个输入变量作为矩阵的索引,并从该位置添加或减去一堵墙。每当我尝试从 VB 调用该函数时,它都会向我发送一条消息:PInvoke 限制无法返回变体。函数什么都不返回,所以没看懂……

这是我的 VB 程序中的声明语句:

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

我知道每次用户想要换墙时我都无法调用 fread 函数;我只是想先让这个工作一次。有什么想法吗?

【问题讨论】:

  • 你的标题和问题涉及两个不同的东西。

标签: vb.net dll file-io fread populate


【解决方案1】:

在 VB 中的 Declare 语句中将 Function 更改为 Sub。这是因为您的 C++ 函数返回 void。

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2011-11-25
    • 2014-03-17
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多