创建c++ .dll供Excel使用;c#(32/64位窗口)

本文关键字:64位 窗口 dll c++ Excel 使用 创建 | 更新日期: 2023-09-27 18:03:17

最近我想开始用Visual c++ Express 2010构建一个。dll数学库。

我想使用。dll作为Excel VBA &C#应用程序。我希望它将在两个32bit/64bit窗口工作。.dll也应该能够在构建后由其他PC使用。

  1. 我是正确的开始使用Win32项目?(似乎我不能使用ATL / MFC在Express版本)

  2. 我需要在.dll中指定2套不同的VBA接口吗?c#加载函数?(VBA要求使用__stdcall)

  3. 在其他PC上使用.dll的任何部署设置?(需要任何regsvr32 cmd进程吗?)

  4. 任何初学者的例子,使一个c++ DLL导出类?(例如VBA/c#可以从这个dll实例化一个新类)…

因为我不确定我是否可以实例化ClassA &VBA/c#中的类b, c++ .dll中的头文件如下:

#pragma once
#ifdef DLLDIR_EX
    #define DLLDIR  __declspec(dllexport)   // export DLL information
#else
   #define DLLDIR  __declspec(dllimport)   // import DLL information
#endif 
class DLLDIR ClassA
{
public:
   void AMethod1();
   void AMethod2();
};
class DLLDIR ClassB
{
public:
   void BMethodi();
   void BMethodii();
};

创建c++ .dll供Excel使用;c#(32/64位窗口)

您不能使用c++构建导出COM类型或C风格函数的DLL文件,并使其在32位和64位环境中都能工作。DLL文件是一种PE/COFF映像,PE只支持每个文件一个ISA(与Macintosh可执行格式相比,它允许在同一个映像文件中包含多个ISA)。您必须重新编译两次,一次针对x86,另一次针对x64。这条规则的唯一例外是。net"AnyCPU"dll,但那是另一回事。

根据这个比较表,c++ Express 2010不包括x64编译器,也不包括MFC和ATL库,尽管您可以将它们作为Windows SDK的一部分单独下载。

回答你的问题:

    就我个人而言,我会从"空项目"模板开始——我不喜欢Win32模板提供的所有不必要的标题和(看似)复杂的初始项目设置。然后我自己手动添加我自己的。c/.h/.cpp文件并编码。
  1. 如果你只是导出函数而不是COM类型,那么你不需要担心接口。只要你的函数被正确导出(见这里:http://msdn.microsoft.com/en-us/library/ys435b3s%28v=vs.80%29.aspx),然后他们可以从。net(包括c#和VB.NET)和VB6/VBA,和C/c++调用。
  2. "其他个人电脑"?

关于#2,您不需要两组接口,因为c#也可以使用__stdcall调用约定。