我正在一个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++语法,但概念相同)