この場合、アプリケーションと dll の両方のソースがあります。
両方を /NXCOMPATなしでコンパイルすると、うまく連携します。しかし、両方を/NXCOMPAT でコンパイルすると、カーネル空間の奥深くでセグメンテーション違反が発生します。
/NXCOMPAT を指定して dll をコンパイルし、それを指定せずに実行可能ファイルをコンパイルすると、問題なく動作します。(実行可能ファイルの DEP 設定は、ロードされた dll で強制されるため、驚くことではありません。)
DEP を有効にした後、別のリンカー オプションが原因で、MainCRTStartup (注: dll バージョンではない) で segfault が発生するのを見たことがあります。ただし、この場合、他のリンカーオプションが設定されていないため、それが答えではないことがわかります。
原因をどこで探すべきか、誰にも考えがありますか?
編集:さらなる奇妙さ。ずっとVS 2008のデバッガで実行していたのですが、デバッガを接続せずに実行してみると、segfaultが消えてしまいました。なぜこれを行っているのかまだわからないので、これは非常に不十分な解決策だと思います。
2番目の編集:VS 2013 Expressのデバッガーで実行されているsegfaultsも。