0

QGIS API と定義済みの QGIS プロジェクト ファイルを使用して Windows フォーム コントロールを作成しようとしています。これにより、Windows フォーム コントロールに X および Y プロパティを設定でき、QGIS API はコントロールに定義済みのマップ データを表示します。 、指定された座標に焦点を合わせます。

QgsProject::instance()->read() を使用すると、未処理の例外 (場所 0x00000000 を読み取るアクセス違反) が発生するように見えるため、実際のコードを 1 行ずつ選択しようとしています。プロジェクトファイルからレイヤーを抽出し、それらをマップキャンバスに追加することを扱う qgsproject.cpp の一部があります。

QgsMapLayer *mapLayer = null;
if(type=="vector")
    mapLayer = new QgsVectorLayer;
else if(type==""raster")
    mapLayer = new QgsRasterLayer;

ここで、type は要素の「type」属性の値です。

Visual Studio プロジェクトでこれをコンパイルしようとすると、どちらのタイプのマップ レイヤーにもデフォルトのコンストラクターがないというメッセージが表示されます。私が利用できる唯一のコンストラクターはパスとベース名を必要とし、実際には機能していないようです (したがって、プロジェクト ファイルが完全なアプリケーション GUI に読み込まれることを考慮して、GUI と同じメソッドを使用しようとしています)。

QgsRasterLayer のデフォルトのコンストラクターは、プライベート メンバー関数でさえないようです。これをコンパイルする方法を知っている人はいますか?

ありがとう、リク

4

1 に答える 1

2

推測ですが、Visual Studio 2008 を使用していますか? http://hub.qgis.org/wiki/quantum-gis/Building_QGIS_from_Source#Building-with-Microsoft-Visual-Studioは、QGIS バイナリ (使用していると思います) が Visual Studio 2008 を使用してビルドされていることを示しています - もし別のバージョンのコンパイラを使用すると、ランタイム ミキシングの問題が発生する可能性があります。

于 2012-01-20T16:35:14.300 に答える