1

Visual Studio を使用してlmdbをビルドしようとしましたが、次のエラーが発生しました。

mdb.obj : エラー LNK2001: 未解決の外部シンボル _NtMapViewOfSection@40
mdb.obj : エラー LNK2001: 未解決の外部シンボル _NtClose@4
mdb.obj : エラー LNK2001: 未解決の外部シンボル _NtCreateSection@28

コードでのこの関数の最初の使用法には、次のコメントがあります。

/* We use native NT APIs to setup the memory map, so that we can
 * let the DB file grow incrementally instead of always preallocating
 * the full size. These APIs are defined in <wdm.h> and <ntifs.h>
 * but those headers are meant for driver-level development and
 * conflict with the regular user-level headers, so we explicitly
 * declare them here. Using these APIs also means we must link to
 * ntdll.dll, which is not linked by default in user code.
 */
NTSTATUS WINAPI
NtCreateSection(OUT PHANDLE sh, IN ACCESS_MASK acc,
  IN void * oa OPTIONAL,
  IN PLARGE_INTEGER ms OPTIONAL,
  IN ULONG pp, IN ULONG aa, IN HANDLE fh OPTIONAL);

Visual Studio で ntdll.dll をリンクするにはどうすればよいですか? その質問はばかげていることは理解していますが、数時間以内に解決策を見つけることができません..

4

2 に答える 2

2

ntdll.libVisual Studio でリンクできます。

于 2016-05-05T22:27:03.080 に答える
0

@datjkoに感謝します!彼は正しかったです:

トランクのバージョン番号が誤って更新されたのではないと思います。バージョン 0.9.17 は 2015 年 11 月 30 日にリリースされ、github.com/LMDB/lmdb/releases/tag/LMDB_0.9.17 から入手できます。私の知る限り、2015 年 11 月 30 日に github.com/LMDB/lmdb/commit/… でリリースされた後、ntdll からの関数の使用がトランクに追加されました。最近の安定版を使用したほうがよいと思います。

彼の推奨事項に従った後、問題は解決しました。

于 2016-05-11T09:05:50.513 に答える