我对这个话题很新,所以请原谅我一些虚假的问题 .
主要思想是在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 - > 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