dcel从c ++代码访问excel

时间:2016-02-13 22:30:26

标签: c++ excel vba excel-vba dll

我正在尝试使用visual studio 2015从C ++代码创建DLL。

我有一个DLL_Tutorial.h文件:

#ifndef _DLL_TUTORIAL_H_
#define _DLL_TUTORIAL_H_
#include <iostream>


extern "C"
{
   DECLDIR int Add( int a, int b );
}

#endif
\\

\然后我创建了一个DLL_Tutorial.cpp

#include <iostream>
#include "DLL_Tutorial.h"

#define DLL_EXPORT

extern "C"
{
    __declspec(dllexport) int Add(int a, int b)

    {
        return(a + b);
    }

}

我有一个Dll文件

我想在VBA中调用我的函数并将其应用于excel表

所以在VBA中我做了:

Public Declare Function Add _
Lib "C:\Users\hasna\Desktop\Projet VBA-C++\projet5\Debug\projet5.dll" (byval a As integer,byval b As integer) As integer

然后在excel表中,我输入2个值(例如6和4)我调用add function但它给了我:#VALEUR!

问题出在哪里? 你能帮我解决一下吗

由于

1 个答案:

答案 0 :(得分:1)

在您的DLL头文件中,您似乎没有使用__declspec(dllexport)为导出的API添加前缀。通常定义哪个API以便在构建DLL时使用__declspec(dllexport),以及在外部项目中使用标头时使用__declspec(dllimport)。最好的方法是使用VS 2015项目模板创建DLL,它包含正确的标题和导出定义,因此您只需要专注于编写API。以下是VS 2015项目的一个工作示例:

示例* .h:

#pragma once

// The following ifdef block is the standard way of creating macros which make exporting 
// from a DLL simpler. All files within this DLL are compiled with the DLLAPI_EXPORTS
// symbol defined on the command line. This symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see 
// DLLAPI_API functions as being imported from a DLL, whereas this DLL sees symbols
// defined with this macro as being exported.
#ifdef DLLAPI_EXPORTS
#define DLLAPI_API __declspec(dllexport)
#else
#define DLLAPI_API __declspec(dllimport)
#endif

// This is an example of an exported function.
DLLAPI_API int fnDLLAPI(void);

示例* .cpp:

// DLLAPI.cpp : Defines the exported functions for the DLL application.
//

#include "DLLAPI.h"

// This is an example of an exported function.
DLLAPI_API int fnDLLAPI(void)
{
    return 42;
}

Windows Via C / C ++书籍也是编写DLL的非常好的资源。现在关于VB导入,我不确定因为我不熟悉通过VB导入API。