vb 调用 c++ dll 函数问题

2025-04-27 19:17:46
推荐回答(1个)
回答1:

__declspec(dllexport)导出的函数名就是内部链接用的函数名。用__cdecl就会换一种方式,后面没有@什么什么了


第二个问题,我试了一下,改为这样

void __stdcall CopyIntArray2(int **ppIn, int **ppOut, int n)
{
    int i;
    for (i = 0; i < n; i++)
    {
        (*ppOut)[i] = (*ppIn)[i];
    }
}

至少读取是能读取了。毕竟要先解引用(解除ref)然后才能开始索引,而不是先索引然后再解引用。

但是如果声明的时候不说清楚数组长度,那么函数返回以后它就默认当作你长度是1了。所以指明最后一个参数为数组大小

Private Declare Sub CopyIntArray2 Lib "testdll.dll" ( ByRef pIn() As Integer, ByRef pOut() As Integer, ByVal n As Integer)


.net 4.0下可以,.net 2.0下不认那个属性参数


想体会一下可以试试看我传的这份代码工程。两个工程都可以下断点然后启动实例调试