创建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使用。
-
我是正确的开始使用Win32项目?(似乎我不能使用
ATL / MFC
在Express版本) -
我需要在.dll中指定2套不同的VBA接口吗?c#加载函数?(VBA要求使用__stdcall)
-
在其他PC上使用.dll的任何部署设置?(需要任何regsvr32 cmd进程吗?)
-
任何初学者的例子,使一个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++构建导出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文件并编码。
- 如果你只是导出函数而不是COM类型,那么你不需要担心接口。只要你的函数被正确导出(见这里:http://msdn.microsoft.com/en-us/library/ys435b3s%28v=vs.80%29.aspx),然后他们可以从。net(包括c#和VB.NET)和VB6/VBA,和C/c++调用。
- "其他个人电脑"?
关于#2,您不需要两组接口,因为c#也可以使用__stdcall调用约定。