[英]Creating C++ .dll for use by Excel & C# (32/64bit Window)
最近,我想開始使用Visual C ++ Express 2010構建.dll數學庫。
我想將.dll用作Excel VBA
和C#
應用程序的庫參考。 我希望它在32bit/64bit
窗口中都能工作。 生成后,.dll也應該可以被其他PC使用。
我是否可以正確使用Win32 Project進行啟動? (看來我無法在Express版本中使用ATL / MFC
)
我是否需要在.dll中指定2組不同的接口,以便VBA和C#加載函數? (VBA要求使用__stdcall)
在其他PC上使用.dll的任何部署設置? (需要任何regsvr32 cmd進程嗎?)
制作C ++ DLL導出類的任何初學者示例嗎? (例如,VBA / C#可以從此dll實例化一個新類)...
因為我不確定是否可以使用c ++ .dll中的.header文件在VBA / C#中實例化ClassA和ClassB:
#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樣式函數並使它在32位和64位環境中都能工作的DLL文件。 DLL文件是一種PE / COFF映像,並且PE每個文件僅支持一個ISA(與Macintosh可執行格式比較,該格式允許在同一映像文件中使用多個ISA)。 您必須重新編譯兩次,一個用於x86,另一個用於x64。 唯一的例外是.NET“ AnyCPU” DLL,但這是另一回事了。
根據此比較表 ,C ++ Express 2010不包括x64編譯器,也不包括MFC和ATL庫,盡管您可以將它們作為Windows SDK的一部分單獨下載。
針對您的問題:
關於#2,您不需要兩組接口,因為C#也可以使用__stdcall調用約定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.