20089


`Noah`というソフトがWindows10に上げたところ少し動作におかしいところがあり、[サイト](http://www.kmonos.net/lib/noah.ja.html)を確認してみるとソースコードが置いてあったのでせっかくだからソースの該当部分を探してみようと思いました。

ソースファイルをダウンロードしてVisual Studio 2015 Communityで
`Noah.sln`を開いてBuildしようとしたら`identifier "NULL" is undefined`など大量のエラーが出ました。

古いAPIや定数などでエラーが出てるのはわかるのですが、こういう時には1つずつエラーを潰していくしかないのでしょうか？

プロジェクトを2015に合わせて作りなおすなど何かマニュアル通りの手続きでBuild可能な状態に持っていけるのなら試してみたいです。何かアドバイスを頂けると助かります。

### 追記

@sayuri さんに教えて頂いたようにリンカーオプションの設定を行おうと思ったのですが、

<https://msdn.microsoft.com/en-us/library/669zx6zc.aspx>  
にあるLinkerの所を開こうとしたのでオプションが見つかりませんでした。  
下にある画像の状態です。

[![画像の説明をここに入力](https://i.stack.imgur.com/xOvv5.jpg)](https://i.stack.imgur.com/xOvv5.jpg)

設定項目を出現させるオプションでもあるのでしょうか？


CC BY-SA 3.0
2015-12-16T18:44:10.593
20087
2015-12-17T01:29:56.133
2015-12-17T01:22:09.267
3271
3271
question
visual-studio
VC++6, 2010のプロジェクトを VS Community 2015 で開く方法


試しに手元の環境で`Noah.sln`を開いてビルドしてみましたが、`identifier "NULL" is
undefined`エラーは出ませんでした。つまり質問者さんの環境に問題がある可能性があります。  
Visual Studio
2015はこのバージョンから既定でC++言語関連のインストールを行わなくなっています。ビルドに必要な機能一式をインストールされていますでしょうか？
例えば新規にコンソールアプリケーションプロジェクトを作成し、ビルド・実行可能ですか？

なお、環境を整えたとしても

> NoahCM.obj : error LNK2001: unresolved external symbol _memset

など、シンボル未解決のエラーが出ます。原因を探りますと、リンカーオプション`/ENTRY:kilib_startUp`の設定により独自のスタートアップコードに変更されています。  
しかし、Visual Studio 2015から`CRT`; C Runtime
LibraryはC++言語で再実装されているため、独自のスタートアップコードを使用してしまうと`CRT`の初期化が行われず使用することができません。（VS2013以前であればC言語で実装されていたので、初期化を行わなくてもある程度は使用できました。）  
とりあえず`kilib_startUp()`関数の直後にある

[code]

    #if 0
    
[/code]

を

[code]

    #if 1
    
[/code]

へ変更し、`/ENTRY`オプションの設定を既定値へ戻したところビルドは通りました。生成された実行ファイルが正常に動作するかまではわかりません。

* * *

> 設定項目を出現させるオプションでもあるのでしょうか？

画像のタイトルバーには「Noah.cpp Property
Pages」とあります。これは`Noah.cpp`ファイルのプロパティです。表示・設定すべきはプロジェクトのプロパティですので、ソリューションエクスプローラーにてプロジェクトのノードを右クリックしてプロパティを選択するなどの操作をしてください。


CC BY-SA 3.0
2015-12-16T21:45:33.613
20089
2015-12-17T01:29:56.133
2015-12-17T01:29:56.133
4236
4236
20087
answer