我对这个话题很新,所以请原谅我一些虚假的问题。
主要思想是在VBA(例如Excel)中导入从C ++编译的DLL。我正在使用Visual Studio 2017 for DLL。我按照指导工具编写了以下文件:
//KingFunc.h
#pragma once
namespace KingFuncs
{
extern "C" __declspec(dllexport) int GiveMeNumber(int i);
}
然后.cpp
//KingFunc.cpp
#include "stdafx.h"
#include "KingFunc.h"
#include <stdexcept>
using namespace std;
namespace KingFuncs
{
int KingFuncs::GiveMeNumber(int i)
{
return i;
}
}
编译器显然没有错误,并在项目文件夹中生成名为KingFunc.dll的DLL输出。
然后我打开Excel - &gt; VBA工具并写了以下内容:
Option Explicit
Public Declare Function PASS Lib _
"[PATH]\KingFunc.dll" (x As Integer) As Integer
Sub MAIN()
Dim a As Integer
Dim b As Integer
a = 100
b = PASS(a)
End Sub
其中PATH是VS项目的长文件夹字符串。
我希望它有效,但它不会......“找不到文件是不可能的”我不明白为什么。
我还尝试将VBA调用为
Public Declare Function PASS Lib _
"[PATH]\KingFunc.dll" Alias "GiveMeNumber" (x As Integer) As Integer