使用导入的静态函数构建c++;班 在C++程序的主要功能中导入了一个名为SwitDL64.DLL的DLL文件 如何为导入的方法构建一个类?换句话说,我应该将这些代码放在类中的什么位置?是否还有其他技巧可以做到这一点,如c#中的Dllimport()和extern

使用导入的静态函数构建c++;班 在C++程序的主要功能中导入了一个名为SwitDL64.DLL的DLL文件 如何为导入的方法构建一个类?换句话说,我应该将这些代码放在类中的什么位置?是否还有其他技巧可以做到这一点,如c#中的Dllimport()和extern,c++,class,dll,import,C++,Class,Dll,Import,看起来像是在C++中使用C库。 最好的方法是使用extern“C”,如图所示 要复制该示例,请执行以下操作: // This is C++ code extern "C" { // Get declaration for f(int i, char c, float x) #include "my-C-code.h" } int main() { f(7, 'x', 3.14); // Note: nothing unusual in the call // ... }

看起来像是在C++中使用C库。

最好的方法是使用
extern“C”
,如图所示

要复制该示例,请执行以下操作:

// This is C++ code
extern "C" {
  // Get declaration for f(int i, char c, float x)
  #include "my-C-code.h"
}
int main()
{
   f(7, 'x', 3.14);   // Note: nothing unusual in the call
  // ...
}

当然,您需要根据您的lib需求来更新它。尽管它允许您像以前一样将函数作为自由函数使用。

这是使用编译器扩展导入函数的方式,这似乎是您在注释中要求的

extern "C" {
    __declspec(dllimport) long IoCreateDriver
    (
        UNICODE_STRING* driver_name,
        DRIVER_INITIALIZE* initialization_fn
    );
}

抱歉,您的问题令人困惑,C#与编写此代码有什么关系?Dll是以什么方式生成并公开其符号的?您无法将这些函数放入类中。但如果您想这样做,可以从类中调用这些函数。就像普通函数一样调用它们。我想从类中调用它们。无论如何,不应该为了调用它们而将它们作为静态方法放在类中吗?@Wolf如果您想这样做,您可以从静态方法调用它们。如果您想这样做,可以从常规方法调用它们。如果你想这样做,你可以在课外给他们打电话。它们只是函数(严格地说,它们是函数指针),就像对待其他函数一样对待它们。但是你不能把它们放在一个类中,你可以从一个类中调用它们。@john这个文件有大约一百个函数,我不想每次在我的程序中使用它们时都在main()中复制数千行代码。显然,问题是如何从一个单独的类文件中调用它们?我不认为这个问题这么奇怪
// This is C++ code
extern "C" {
  // Get declaration for f(int i, char c, float x)
  #include "my-C-code.h"
}
int main()
{
   f(7, 'x', 3.14);   // Note: nothing unusual in the call
  // ...
}
extern "C" {
    __declspec(dllimport) long IoCreateDriver
    (
        UNICODE_STRING* driver_name,
        DRIVER_INITIALIZE* initialization_fn
    );
}