幼稚園の頃の記憶は5シーンぐらいしか残っていません。
その中のひとつ。
車が走ってくるところ(そんなにスピードは出ていない)に、道路の真ん中に大の字に立って通せんぼする私。
当然、運転手にカンカンに怒られる。
そこで「やってみたかってん」という自分。
運転手は「やってみたかったんならショウガナイな」と呆れ顔で言う。
大人しい性格だったが、試してみたいと思うと衝動を抑えられない。
そんな一面があると思う。
だからこそ、試行錯誤するプログラミングの世界が性に合っているのかもしれない。
逆に日本語は、とても苦手だった。人とは、どこか感覚が異なるのかもしれない。知的ジョークの類は、ツボに嵌まらなければ、とことん何が面白いのか理解できない。その点、コードはクリアだ。結果に現れる。
そんな事を思い出した。
2016年5月18日水曜日
windows unistd.h 忘備録
OpenCV を Windows でコンパイルしようとしたり、何かにつけて、引っかかるので、忘備録。
ここを参照しろ。
http://d.hatena.ne.jp/tt_clown/20100602/1275457123
http://d.hatena.ne.jp/deraw/20070517/1179334643
winsock2.h を include してる部分で嵌るので、unistd.h は
#ifdef NEED_GETHOSTNAME
#ifndef _WINDOWS_
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
#endif
#pragma comment( lib, "ws2_32" )
#include <winsock2.h>
#endif
と、修正する事。
今後、コンパイルエラーで
gethostname を使用している箇所があれば、
#define NEED_GETHOSTNAME
#include <unistd.h>
#undef NEED_GETHOSTNAME
としてやれば良い。
面倒でも、こうしないと、あちこちエラーで悩まされるだろう。
3rdparth 中の zlib ライブラリの
zconf.h
ここで、Z_HAVE_UNISTD_H の定義を消す事
ACCESS_MASK が winnt.h と、namespace cv::ACCESS_MASK でバッティングしている。
test_grfmt.cpp はテストユニットみたいなんで、コンパイルのターゲットから外してしまうか、
// using namespace cv;
のように、コメントアウトして、地道に cv::Mat みたいに namespace を付けて回るか?
以上。
補足:
cmake-gui でエラーとか、com をコンパイルでエラーとか、全部、管理者権限が脳足りんのじゃ。
追記:
VC11とか、include dir の設定が共通化でけん。
ここを参照しろ。
http://d.hatena.ne.jp/taiyakisun/20130406/1365248215
VC11 は、こんな感じ。
よく無いって怒られる。cstdint とか、unistd.h とかを入れといたった。
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludePath>$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);$(WindowsSdkDir)include;D:\Libs\cstdint</IncludePath>
<LibraryPath>$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSDK_LibraryPath_x86);$(WindowsSdkDir)lib;</LibraryPath>
</PropertyGroup>
</Project>
2016/07/28追記:$(WindowsSDK_IncludePath); では、SDKのパスが取れず、$(WindowsSdkDir)include を追加した。lib も同様
http://d.hatena.ne.jp/tt_clown/20100602/1275457123
http://d.hatena.ne.jp/deraw/20070517/1179334643
winsock2.h を include してる部分で嵌るので、unistd.h は
#ifdef NEED_GETHOSTNAME
#ifndef _WINDOWS_
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
#endif
#pragma comment( lib, "ws2_32" )
#include <winsock2.h>
#endif
と、修正する事。
今後、コンパイルエラーで
gethostname を使用している箇所があれば、
#define NEED_GETHOSTNAME
#include <unistd.h>
#undef NEED_GETHOSTNAME
としてやれば良い。
面倒でも、こうしないと、あちこちエラーで悩まされるだろう。
zconf.h
ここで、Z_HAVE_UNISTD_H の定義を消す事
#ifndef ZCONF_H #define ZCONF_H /* #undef Z_PREFIX */ //#define Z_HAVE_UNISTD_H
ACCESS_MASK が winnt.h と、namespace cv::ACCESS_MASK でバッティングしている。
test_grfmt.cpp はテストユニットみたいなんで、コンパイルのターゲットから外してしまうか、
// using namespace cv;
のように、コメントアウトして、地道に cv::Mat みたいに namespace を付けて回るか?
以上。
補足:
cmake-gui でエラーとか、com をコンパイルでエラーとか、全部、管理者権限が脳足りんのじゃ。
追記:
VC11とか、include dir の設定が共通化でけん。
ここを参照しろ。
http://d.hatena.ne.jp/taiyakisun/20130406/1365248215
VC11 は、こんな感じ。
よく無いって怒られる。cstdint とか、unistd.h とかを入れといたった。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludePath>$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);$(WindowsSdkDir)include;D:\Libs\cstdint</IncludePath>
<LibraryPath>$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSDK_LibraryPath_x86);$(WindowsSdkDir)lib;</LibraryPath>
</PropertyGroup>
</Project>
2016年5月13日金曜日
登録:
投稿 (Atom)