1
我需要在64位Excel中調用DLL才能在VBA中使用。 i。)我被告知我無法在64位程序中使用32位dll,這是真的嗎? ii))有誰知道他們知道正在演示如何將一個dll加載到VBA中的示例。在64位Excel中調用C DLL以便在VBA中使用
目前他們甚至沒有加載。我可以在C++中調用DLL。
示例代碼如下,在64位模式下編譯得很好。我試過註冊功能。 VBA的錯誤是「編譯錯誤:預期LIB」
失敗調用函數在VBA
Public Declare PtrSafe Function getNumber_Lib "C:\Users\james.allsop\Documents\Visual Studio 2010\Projects\DynamicLibrary\x64\Debug\MathFuncsDll.dll"() As Integer
以下所有編譯和運行。
MathFuncsDll.h
// MathFuncsDll.h
// Returns a + b
__declspec(dllexport) double Add(double a, double b);
// Returns a - b
__declspec(dllexport) double Subtract(double a, double b);
// Returns a * b
__declspec(dllexport) double Multiply(double a, double b);
// Returns a/b
// Throws DivideByZeroException if b is 0
__declspec(dllexport) double Divide(double a, double b);
__declspec(dllexport) double getNumber();
MathFuncsDll.cpp
#include "MathFuncsDll.h"
double Add(double a, double b)
{
return a + b;
}
double Subtract(double a, double b)
{
return a - b;
}
double Multiply(double a, double b)
{
return a * b;
}
double Divide(double a, double b)
{
if (b == 0)
{
return -1.0;
}
return a/b;
}
double getNumber()
{
return 1000;
}
MyExecRefsDll.cpp
// MyExecRefsDll.cpp : Defines the entry point for the console application.
//
// MyExecRefsDll.cpp
// compile with: /EHsc /link MathFuncsDll.lib
#include <iostream>
// Returns a + b
__declspec(dllimport) double Add(double a, double b);
// Returns a - b
__declspec(dllimport) double Subtract(double a, double b);
// Returns a * b
__declspec(dllimport) double Multiply(double a, double b);
// Returns a/b
// Throws DivideByZeroException if b is 0
__declspec(dllimport) double Divide(double a, double b);
__declspec(dllimport) double getNumber();
int main()
{
double a = 7.4;
int b = 99;
std::cout << "a + b = " << Add(a, b) << "\n";
std::cout << "a - b = " << Subtract(a, b) << "\n";
std::cout << "a * b = " << Multiply(a, b) << "\n";
std::cout << "a/b = " << Divide(a, b) << "\n";
return 0;
}
任何幫助將不勝感激! James
謝謝,沒有看到它由於編輯中的下劃線。謝謝,並感謝您直接在32/64位部分設置我。還發現你需要一個def文件。出口是不夠的。 – James