我正在一个VB.Net项目中,我需要在其中加载Nvidia的API NvApi.lib。但是在Nvidia网站上却说:



我的理解是.Net不支持静态链接,有没有办法包装NvApi.lib文件,以便可以从Visual Basic调用它?
P.S.我看过一个名为NvApi.net的项目here,这使我相信这是可能的,但该项目似乎不完整,于2009年被放弃,我所需的功能于2010年被添加到API中。

编辑:

我能够使它工作。我在解决方案中添加了一个新的可视c++ CLR类项目。将nvapi.lib文件作为依赖项进行链接并将nvapi.h文件添加到项目后,我能够为所需的方法编写一个小型包装器。下面是我使用的代码。它只允许我打开和关闭3D立体声。

#include "nvapi.h"

public ref class NvApiWrapper
{
public:
static bool NvApiWrapper_Initialize(){
    if (NvAPI_Initialize() == 0){
        return true;
    } else {
        return false;
    }
}

static bool NvApiWrapper_Stereo_Enable(){
    if (NvAPI_Stereo_Enable() == 0){
        return true;
    } else {
        return false;
    }
}

static bool NvApiWrapper_Stereo_Disable(){
    if (NvAPI_Stereo_Disable() == 0){
        return true;
    } else {
        return false;
    }
}
};

最佳答案

您将需要创建一个静态链接到.lib的c++/cli包装器,然后公开.net类等。这正是c++/cli最方便使用的地方。

This tutorial具有很好的演练(基于较旧的托管c++语法,但概念相同)

10-06 09:11