5

Nvidia の API NvApi.lib をロードする必要がある VB.Net プロジェクトに取り組んでいます。ただし、Nvidia の Web サイトには次のように書かれています。

「NvAPI をアプリケーションに動的にリンクすることはできません。ライブラリへの静的リンクを作成してから、nvapi.dll を動的にロードする NvAPI_Initialize() を呼び出す必要があります。」

私の理解では、.Net は静的リンクをサポートしていません。Visual Basic から呼び出せるように NvApi.lib ファイルをラップする方法はありますか? PSここでNvApi.net と呼ばれるプロジェクトを見たことがありますが、それは可能であると信じていますが、そのプロジェクトは不完全なようで、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;
    }
}
};
4

2 に答える 2

2

ライブラリに静的にリンクしてラップする C++/CLI dll を作成できます。その後、dll から適切な CLI インターフェイスをいくつか公開した場合は、VB.net からそれらを呼び出すことができるはずです。

于 2012-08-16T19:34:14.047 に答える
2

.lib に静的にリンクされ、.net クラスなどを公開する c++/cli ラッパーを作成する必要があります。これはまさに c++/cli が最も便利な場所です。

このチュートリアルには、優れたウォークスルーがあります (古いマネージ C++ 構文に基づいていますが、概念は同じです)。

于 2012-08-16T19:35:39.447 に答える