<?xml version="1.0" encoding="UTF-8" ?>
<feed xml:lang="ja" xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0">
  <title type="text">膠着戦線 -日常的戦場-</title>
  <subtitle type="html">少し更新頻度あげようと思う今日この頃....
ダメプログラマのダメ日記＼(^o^)／</subtitle>
  <link rel="self" type="application/atom+xml" href="http://bypath.blog.shinobi.jp/atom"/>
  <link rel="alternate" type="text/html" href="http://bypath.blog.shinobi.jp/"/>
  <updated>2008-07-24T01:39:12+09:00</updated>
  <author><name>B.P</name></author>
  <generator uri="//www.ninja.co.jp/blog/" version="0.9">忍者ブログ</generator>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
  <entry>
    <id>bypath.blog.shinobi.jp://entry/15</id>
    <link rel="alternate" type="text/html" href="http://bypath.blog.shinobi.jp/%E9%9B%91%E8%A8%98%E3%80%82/-c--%20dll%E3%81%AE%E5%8B%95%E7%9A%84%E3%83%AD%E3%83%BC%E3%83%89" />
    <published>2009-11-27T01:48:13+09:00</published> 
    <updated>2009-11-27T01:48:13+09:00</updated> 
    <category term="雑記。" label="雑記。" />
    <title>[C#] DLLの動的ロード</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<br />
&nbsp;■DLLをロードする。<br />
<br />
C#の場合、同じ&quot;C#&quot;で作成されたアセンブリ（DLLなりEXE）なりを<br />
参照することで、公開されているメソッドを使うことができますが...<br />
<br />
C++等で書かれた旧来のDLLをロードする際に、いろいろと問題が起こります。<br />
<br />
基本的には、&darr;みたいに&quot;Dllimport属性でDLLを指定することで使用可能です(&acute;・&omega;・`)ｂ<br />
<br />
<br />
<div>[DllImport(&quot;kernel32&quot;, CharSet = CharSet.Unicode, SetLastError = true)]</div>
<div>public static extern IntPtr LoadLibrary(string lpFileName);<br />
<br />
<br />
■問題はここからで。<br />
DLLを動的にロードする関数が、.NET Frameworkには見当たらない&hellip;((；゜Д゜))<br />
<br />
いろいろ調べてみたんですが、結局はWin32APIを使用してC++と同じようにロード<br />
するしか方法がないみたいです。<br />
以下適当なサンプル。<br />
<br />
<br />
/// LoadLibrary()<br />
<div>[DllImport(&quot;kernel32&quot;, CharSet = CharSet.Unicode, SetLastError = true)]</div>
<div>public static extern int LoadLibrary(string lpFileName);<br />
<br />
<div>/// FreeLibrary()</div>
<div>[DllImport(&quot;kernel32&quot;, SetLastError = true)]</div>
<div>public &nbsp;static extern bool FreeLibrary(IntPtr hModule);</div>
<div><br />
/// GetProcAddress()</div>
<div>[DllImport(&quot;kernel32&quot;, CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = false)]</div>
<div>public &nbsp;static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName);</div>
<br />
/// &quot;hogehoge.dll&quot;のpublicメソッド<br />
public delegate bool hogehogeFunc(string param1);<br />
&nbsp;</div>
</div>
private void Test(){<br />
&nbsp;&nbsp; &nbsp;/// DLLをロード<br />
&nbsp;&nbsp; &nbsp;int moduleHandle = LoadLibrary(&quot;hogehoge.dll&quot;);<br />
<br />
&nbsp;&nbsp; &nbsp;/// APIへのポインタを取得<br />
<div>&nbsp;&nbsp; &nbsp;IntPtr funcPtr = GetProcAddress(moduleHandle&nbsp;, &quot;hogehogeFunc&quot;);</div>
<div>&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;/// ポインタからdelegateへ変換<br />
&nbsp;&nbsp; &nbsp;hogehogeFunc&nbsp;func1 =&nbsp;</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>(hogehogeFunc)Marshal.GetDelegateForFunctionPointer(</div>
<div><span class="Apple-tab-span" style="white-space:pre">			</span>funcPtr,&nbsp;<span class="Apple-tab-span" style="white-space:pre">	</span>typeof(hogehogeFunc));<br />
<br />
&nbsp;&nbsp; &nbsp;func1(&quot;パラメータだよー&quot;);<br />
<br />
&nbsp;&nbsp; &nbsp;/// DLLの解放<br />
&nbsp;&nbsp; &nbsp;FreeLibrary(moduleHandle);</div>
}<br />
<br />
<br />
■ビルドすらしていないのでアレですが。<br />
細部は間違ってるかもしれませんが、だいたい&uarr;みたいな感じかと。<br />
<br />
あとは、エラー処理さえ入れてしまえばOK。<br />
<br />
LoadLibrary()したら、必ずFreeLibrary()しなきゃならんのが非常に面倒(&acute;・&omega;・`)<br type="_moz" />]]> 
    </content>
    <author>
            <name>B.P</name>
        </author>
  </entry>
  <entry>
    <id>bypath.blog.shinobi.jp://entry/14</id>
    <link rel="alternate" type="text/html" href="http://bypath.blog.shinobi.jp/php/php%E3%81%AE%E7%92%B0%E5%A2%83%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F%E3%80%82" />
    <published>2009-11-13T00:30:32+09:00</published> 
    <updated>2009-11-13T00:30:32+09:00</updated> 
    <category term="PHP" label="PHP" />
    <title>PHPの環境作ってみた。</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[■大学の卒業研究なんかはPHPで作っていたんですが、<br />
卒業以来、ほとんど触れていませんでした。<br />
<br />
そんな訳で、なんとな～く弄りたくなって、PHPの環境を作ってみました。<br />
<br />
<br />
開発環境として、大学に居た当時は「エディター」でガリガリ書いていただけ<br />
だったんですが、、、。<br />
仕事でVisualStudioとか使っていると、統合開発環境がやっぱり使いやすい。<br />
<br />
VS.ｐｈｐとかいう、VisualStudioチックなやつもあるみたいなんですが、<br />
なんとなくお金を出したくなかったんで、Eclipseにて&hellip;。<br />
<br />
<br />
■んで、導入したのは&hellip;<br />
<br />
（開発環境）<br />
<br />
<a href="http://mergedoc.sourceforge.jp/"> Pleiades（プレアデス）</a><br />
<br />
Eclipseプラグイン日本語化プラグイン（&hellip;分かりづらい&hellip;）らしい。<br />
まあ、自分もあまり詳しくはないんですが&hellip;。<br />
とりあえず、Eclipseなら大丈夫だろうという、かなり適当な感じで導入。<br />
<br />
（LAMP）<br />
<br />
<a href="http://www.apachefriends.org/en/xampp.html">XAMPP for Windows</a><br />
<br />
Apacheやら、MySQLやら、PHPやらをまとめて導入できる便利ツール（？）。<br />
サービスの開始なんかも、XAMPPのコントロールパネルから管理できるので<br />
楽ちん(&acute;&forall;｀)ｂ<br />
<br />
<br />
そんな訳で、ぼちぼち適当に何か作っていこうと思います。<br />
暇があれば、PHPのサンプルでもアップしてみます。<br />
期待しないでください（ぇ<br type="_moz" />]]> 
    </content>
    <author>
            <name>B.P</name>
        </author>
  </entry>
  <entry>
    <id>bypath.blog.shinobi.jp://entry/13</id>
    <link rel="alternate" type="text/html" href="http://bypath.blog.shinobi.jp/%E9%9B%91%E8%A8%98%E3%80%82/ssf%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F" />
    <published>2009-10-02T02:07:50+09:00</published> 
    <updated>2009-10-02T02:07:50+09:00</updated> 
    <category term="雑記。" label="雑記。" />
    <title>SSFを使ってみた</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[■最近、セガサターンのソフトを整理していてふと思った。<br />
<br />
「そーいや、セガサターンのエミュレータってどーなんだ&hellip;？」<br />
<br />
<br />
最後にチェックしたのは大学生時代&hellip;いまから４年前くらい。<br />
当時の俺のマシンのスペックは、「PentiumIV 2.6GHz」くらい。<br />
<br />
正直、まともに動かなかった(&acute;・&omega;・`)<br />
<br />
<br />
■そんなんで。<br />
<a href="http://www.google.co.jp/search?hl=ja&amp;q=SSF%E3%80%80%E3%82%B5%E3%82%BF%E3%83%BC%E3%83%B3&amp;btnG=%E6%A4%9C%E7%B4%A2&amp;lr=lang_ja">SSF</a>というエミュレータで試してみた。<br />
<br />
<br />
うちのマシンのスペックは&hellip;<br />
CPU：Core2Duo E6750 ( 2.6GHz )<br />
メモリ：2GB<br />
グラボ：GeForce8600GT ( 512MB )<br />
<br />
とりあえず、手元にある「ガーディアンヒーローズ」をISOイメージとして<br />
取り込んで実行しました。<br />
（ドライブにCD-ROM突っ込んで、直接もできるけど、五月蝿いので&hellip;）<br />
<br />
<a href="//bypath.blog.shinobi.jp/File/81438e1e.jpeg" target="_blank"><img src="//bypath.blog.shinobi.jp/Img/1254416689/" border="0" alt="" /></a>
<br />
<br />
<a href="//bypath.blog.shinobi.jp/File/b3e5ccda.jpeg" target="_blank"><img src="//bypath.blog.shinobi.jp/Img/1254416485/" border="0" alt="" /></a>
<br />
<br />
普通に動く&hellip;( ﾟДﾟ)<br />
サターンというのは特殊なハードで、CPUを二つ積んでいた<br />
（描画用と処理用？）らしいので今までは凄く重かったんです。<br />
<br />
しかし、さすがはデュアルコアCPU&hellip;普通に実用レベルの動作をする<br />
<br />
&hellip;でも動いたのに、何故かサターンのゲームは実機でやりたくなる。<br />
まあ、RPGくらいならいいかな&hellip;という程度。<br />
<br />
皆さんも暇なら動かしてみては？<br />
今なら、サターンのソフト激安っすよ（ぁ<br />
<br type="_moz" />]]> 
    </content>
    <author>
            <name>B.P</name>
        </author>
  </entry>
  <entry>
    <id>bypath.blog.shinobi.jp://entry/12</id>
    <link rel="alternate" type="text/html" href="http://bypath.blog.shinobi.jp/c---c-/%E7%B5%82%E4%BA%86%E3%82%B3%E3%83%BC%E3%83%89" />
    <published>2009-02-02T22:35:49+09:00</published> 
    <updated>2009-02-02T22:35:49+09:00</updated> 
    <category term="C++/C#" label="C++/C#" />
    <title>終了コード</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[■Ｃ＋＋のカテゴリとして正しいかは微妙だけど、とりあえず。<br />
<br />
コマンドプロンプトや、他のツールから、ＥＸＥをキックした際に、<br />
戻ってくる終了コードが取得できない現象。<br />
&nbsp;<br />
<br />
<br />
■ウインドウアプリケーション<br />
ウインドウを持たない、コンソールアプリケーションであれば、<br />
コマンドプロンプトにて、<br />
<br />
<br />
TEST.EXE&nbsp;<br />
echo %ERRORLEVEL%<br />
<br />
と実行すれば、終了値を見ることが出来ます。<br />
<br />
<br />
けれども、ウインドウを持っているアプリケーションで同じコマンドを実行しても、<br />
終了値をとることは出来ません。<br />
<br />
ですが、そのコマンドを「バッチファイル」に書いて実行すれば、終了コードをとることが<br />
できる&hellip;なぜだ。<br />
<br />
<br />
<br />
■結論から言うと。<br />
<br />
ウインドウアプリケーションの場合、<br />
<br />
start /wait TEST.EXE<br />
echo %ERRORLEVEL%<br />
<br />
とすれば終了コードをとることができる。<br />
start /wait &nbsp; というのは、要はアプリケーションが終了するまで待っておけ、ということ。<br />
これを明示的にしないと、コマンドプロンプトと実行したアプリケーションで同期が取れず、<br />
終了コードを取得することが出来ない。<br />
<br />
「バッチファイル」に記述した場合に、終了コードをとることが出来たのは、<br />
「バッチファイル」は一行ごとに終了待ちして同期を取っているかららしい。<br />
<br />
&hellip;まあ、よく考えたら、そりゃそうだわな・・・という話。　]]> 
    </content>
    <author>
            <name>B.P</name>
        </author>
  </entry>
  <entry>
    <id>bypath.blog.shinobi.jp://entry/11</id>
    <link rel="alternate" type="text/html" href="http://bypath.blog.shinobi.jp/%E3%82%B2%E3%83%BC%E3%83%A0%E6%94%BB%E7%95%A5%E3%83%A1%E3%83%A2/%E3%83%99%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%AC%E3%82%B9%E3%80%80%E3%82%A4%E3%83%B4%E3%83%AB%E3%83%BC%E3%83%88" />
    <published>2009-01-20T23:43:07+09:00</published> 
    <updated>2009-01-20T23:43:07+09:00</updated> 
    <category term="ゲーム攻略メモ" label="ゲーム攻略メモ" />
    <title>ベアルファレス　イヴルート</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[■適当にキャラ攻略。<br />
「わかるわけねーよｗ」みたいなキャラもいるんで、メモメモ。<br />
<br />
魔法のオネーサンのイヴ。<br />
とりあえず、前半は全く戦力にならんのですが、後半にライトソードを覚えてからは<br />
かなり使える。<br />
<br />
&hellip;ただ、このゲーム自体が戦闘の難易度はヌルメなので、主人公無双してればクリアできる。<br />
<br />
<br />
■ルート。<br />
<br />
①教会に呼ばれて、「ラフメルの葉」の採集の手伝いをするか？&hellip;の選択肢で、「断る」<br />
<br />
②一人（orレイアは誘えた）で、ダンジョンに入る。<br />
「くだらない脅迫」のミッション後に、「雫の石」を手に入れて、<br />
「ラフメルの葉」をとりに行く。<br />
※このミッションにイヴは誘えない。また、ミッション後にディアスとレイアが離脱。<br />
<br />
③インディゴスをイヴと倒した　＋　旅の目的が「武者修行」の場合、<br />
主人公一人でイヴを誘いに行くと会話。<br />
選択肢で「君と付き合うのも修行のうち」を選択。<br />
※発生条件には好感度も関わっているらしい。発生時期の詳細は知らんス(&acute;・&omega;・`)<br />
<br />
④太陽の神殿後の選択で『手伝うつもりはない』を選択。<br />
&rarr;断った後、イヴを誘って二人で「西の斎殿」に突入。<br />
&rarr;突入後の会話中の選択肢で、「期待されるのが嫌」を選択。<br />
<br />
⑤後半でルカが離脱するイベントで、ルカを「説得しない」。<br />
<br />
<br />
もう、この人のルートの選択肢、むちゃくちゃ。<br />
普通にやってたら、あまり選ばない選択肢のオンパレード。<br />
「僕、勇者(&acute;&forall;｀)！」&hellip;という人にはオススメできない。&nbsp;]]> 
    </content>
    <author>
            <name>B.P</name>
        </author>
  </entry>
  <entry>
    <id>bypath.blog.shinobi.jp://entry/10</id>
    <link rel="alternate" type="text/html" href="http://bypath.blog.shinobi.jp/%E3%82%B2%E3%83%BC%E3%83%A0%E6%94%BB%E7%95%A5%E3%83%A1%E3%83%A2/%E3%83%99%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%AC%E3%82%B9%E3%80%80%E6%94%BB%E7%95%A5%E3%83%A1%E3%83%A2%EF%BC%91" />
    <published>2009-01-20T23:28:26+09:00</published> 
    <updated>2009-01-20T23:28:26+09:00</updated> 
    <category term="ゲーム攻略メモ" label="ゲーム攻略メモ" />
    <title>ベアルファレス　攻略メモ１</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[■ＰＳＰのゲームアーカイブスで「ベアルファレス」をダウンロードして遊んでいたので、<br />
その攻略メモをば&hellip;。<br />
<br />
あまり情報がないから困る(&acute;・&omega;・`)<br />
<br />
<br />
■キャラメイク<br />
①上級貴族<br />
細剣＋逆剣で二刀流ができる。恐ろしい火力。出が早く、距離も長い。<br />
<br />
②農民<br />
大剣。攻撃範囲が広いので当てやすい。敵をまとめて吹っ飛ばせるので楽。<br />
<br />
とりあえず、キャラは上の二択が無難な気がする。<br />
もしくは、猟師にして「弓」を使うのもアリか。<br />
<br />
「弓」だと、ラスボスを相手に一方的に、俺ＴＵＥＥＥＥＥができるらしい。<br />
<br />
<br />
■面倒なミッション<br />
○「ラフメルの葉」<br />
<br />
アッシュの妹の薬の材料を取りに行くミッション。<br />
宝箱があるけど、大したモノじゃないので、別にスルーしてもＯＫ。<br />
金になるので、余裕があるなら確保。<br />
キュアポイズンを2、30個くらい 用意しておくと楽。余裕があるならポーションも。<br />
<br />
<br />
○「鋼鉄の審問者」<br />
<br />
このミッションに参加することが、ＥＤの最低条件。メンドイ。<br />
戦闘前にウォーターボトルを大漁に買い込んでおくと吉。第一形態は地道に岩をぶつける。<br />
第二形態は、「体」がジャマなので、通常攻撃でさっさと撃破。<br />
「頭」が無駄に素早くて当てにくいので、ガレキの間に押し込んで逃げ場を封じてフルボッコ。<br />
または、「バキューム」で足止めして斬り殺す。<br />
<br />
<br />
○「選ばれし騎士たち」<br />
<br />
敵を一匹も殺してはいけないミッション。正直ダルイ。<br />
アイス系や、オイル系のトラップで足止めして進めるのがスタンダードらしい。<br />
魔法キャラがいたら、氷系の魔法で凍らせながら進んでも可。<br />
&hellip;が、実際には主人公の「バキューム３」があったら、普通にいける。<br />
適当に設置して、敵を吸い込んで、その隙に突破。　<br />
自分が吸い込まれた＼(^o^)／　なので、気をつける(&acute;・&omega;・`)<br />
<br />
<br />
○「神の世界」<br />
<br />
なんかラストミッション。ラスボスはほとんどチートみたいな動きをする。<br />
とりあえず、フリップパネルを利用して接近&rarr;斬るを適当に繰り返す。<br />
ラスボスのお約束で第三形態まである。<br />
Ｌｖ５０くらいあったら、だいたい各形態２，３発で沈む。<br />
<br />
&hellip;バキューム３で足止めはできるけど、敵の攻撃が激しいので、正直それどころじゃない。<br />
魔法キャラがいるなら、第一、第二形態は、適当にソード系の魔法を乱打してれば楽勝。<br />]]> 
    </content>
    <author>
            <name>B.P</name>
        </author>
  </entry>
  <entry>
    <id>bypath.blog.shinobi.jp://entry/9</id>
    <link rel="alternate" type="text/html" href="http://bypath.blog.shinobi.jp/%E9%9B%91%E8%A8%98%E3%80%82/googlechrome" />
    <published>2008-12-13T11:06:27+09:00</published> 
    <updated>2008-12-13T11:06:27+09:00</updated> 
    <category term="雑記。" label="雑記。" />
    <title>GoogleChrome</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[&nbsp;■ようやく、<a href="http://www.google.com/chrome/index.html?hl=ja&amp;brand=CHMA&amp;utm_campaign=ja&amp;utm_source=ja-ha-apac-ja-bk&amp;utm_medium=ha&amp;utm_term=google%20chrome">GoogleChrome</a>が正式版になったようです。<br />
<br />
そんなわけで、サブノートに導入しました。<br />
<br />
メインマシンは相変わらずOperaなんですが、サブノートは極力軽快に動作するものを使用したかったので、、<br />
<br />
&beta;版も少し触ったことがあって、そのときからなんともいえない「ヌメッ」とした動作、、、（なんじゃそりゃ）は、結構気に入ってました(&nbsp;&acute;&forall;｀)<br />
<br />
<br />
■問題点があるとすれば。<br />
<br />
OperaやSleipnirなんかのタブブラウザでは、もはや標準機能となっている、<br />
<br />
マウスジェスチャー機能がGoogleChromeには搭載されていないっていうこと。<br />
<br />
、、、なんというか、普段から慣れ親しんでいると、あの機能がないと非常に使いづらい。<br />
<br />
どうにかできないものかな～と探していたら、、、、あるじゃないか。<br />
<br />
タスクトレイに常駐してマウスの軌道を判定してくれるやつが、、、<br />
<br />
・<a href="http://www.forest.impress.co.jp/lib/sys/hardcust/mouse/kazaguru.html">かざぐるマウス</a><br />
<br />
インストーラーとかもなくて、ダブルクリックしたら起動する(&acute;・&omega;・｀)<br />
<br />
あとは設定画面を開いて、有効にするブラウザと、各ボタンや動作に機能を割り振っていくだけ。<br />
<br />
&hellip;&hellip;便利な世の中になったもんじゃ～。<br />
<br />
<br />
■まあ、ほかにも問題、、、というか疑問がなくもない。<br />
<br />
このGoogleChromeって、インストールするときにどこにインストールするのか聞かれない。<br />
<br />
リンクをたどっていくと、、、個人の作業フォルダの奥にぶっこんである、、、。<br />
<br />
&quot;C:\Documents and Settings\&lt;Account Name>\Local Settings\Application &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Data\Google\Chrome\Application\chrome.exe&quot;<br />
<br />
...なんでこんなところにぶっこんでるんだ...。<br />
<br />
なんか、閲覧履歴をGoogleに送るとか、そういう話もあった気が。<br />
<br />
オープンソースのブラウザっていう割には、そのあたりがぜんぜんオープンじゃない！<br />
<br />]]> 
    </content>
    <author>
            <name>B.P</name>
        </author>
  </entry>
  <entry>
    <id>bypath.blog.shinobi.jp://entry/8</id>
    <link rel="alternate" type="text/html" href="http://bypath.blog.shinobi.jp/%E9%9B%91%E8%A8%98%E3%80%82/%E9%81%85%E5%BB%B6%E3%83%AD%E3%83%BC%E3%83%89%E3%80%82" />
    <published>2008-11-06T23:48:52+09:00</published> 
    <updated>2008-11-06T23:48:52+09:00</updated> 
    <category term="雑記。" label="雑記。" />
    <title>遅延ロード。</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[■ＤＬＬの遅延ロード。<br />
<br />
Windows95-Vista全てで動作を保証するツールなんかを作ってると、<br />
95ではDLLが足りなくて、うまく動かないこととかあります。<br />
<br />
WIndows95ではVistaで動かした時に比べて、「機能が落ちる」こと<br />
があるのは仕方がないにしても、「動かない」分けにはいかない。<br />
<br />
たいてい、そういう時は「ＤＬＬが足りなくて～&hellip;」みたいなエラー<br />
になるがことがおおいので、遅延ロードの出番(&acute;・&omega;・`)<br />
<br />
<br />
■とりあえず、VC6++でやりました。<br />
<br />
// 遅延ロード用ライブラリのヘッダ<br />
#include &lt;delayimp.h> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
<br />
// 遅延ロード用ライブラリの読み込み<br />
#pragma comment (lib,&quot;delayimp.lib&quot;)<br />
<br />
// 遅延ロードするDLL<br />
#pragma comment (linker, &quot;/DELAYLOAD:hogehoge.dll&quot;)<br />
<br />
<br />
こんな感じのコードを書いてやれば、必要な時にDLLをロードするようになるみたいです。<br />
VC7以降は、プロジェクトの設定でdelayimp.libをリンクし、リンカオプションに /delayload: &quot;遅延ロードするDLL名&quot;を書くみたいです。<br />
<br />
<br />
内部的には、動的にロードするのと変わりない動作をしているみたいです。<br />
<br />
&hellip;いちいち、自分で動的にロードしようとしていた一時間を返せ＼(^o^)／<br />]]> 
    </content>
    <author>
            <name>B.P</name>
        </author>
  </entry>
  <entry>
    <id>bypath.blog.shinobi.jp://entry/7</id>
    <link rel="alternate" type="text/html" href="http://bypath.blog.shinobi.jp/c---c-/vc6%20%E3%81%A8%20vc8" />
    <published>2008-10-03T23:32:02+09:00</published> 
    <updated>2008-10-03T23:32:02+09:00</updated> 
    <category term="C++/C#" label="C++/C#" />
    <title>VC6 と VC8</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[■まあ、久しぶりにメモメモ。<br />
ちょっと、Ｃ＋＋で困ったことがあったのでメモメモ。<br />
<br />
Visual Studio 2005 ( VC++8.0 )でビルドした、libファイルを<br />
<br />
Visual Studio 6.0 ( VC++6.0 ) のプロジェクトにリンクしようとしたところ、<br />
<br />
外部参照エラーが出ました(&acute;・&omega;・`)<br />
<br />
原因は何か～、という話になって。<br />
どうやら悪いのは、CStringらしいという話になりました。<br />
Visual Studio 2005 と Visual Studio 6.0 のCString型では、どうやら実装が異なっているようでして。<br />
Visual Studio 2005で作成したlibの関数に、戻り値がCString型のヤツがあると、リンクできないという現象に＼(^o^)／<br />
<br />
普通に、LPTSTR とか使ってやっておくべきだったという話デスネ。<br />
<br />
■CString型っていうのは便利です。<br />
UNICODEだろうが、マルチバイト文字だろうが意識せずに扱えるので便利なんですが、<br />
あくまでも、あれはVisual Studioが用意したクラスなんで、こういうときに困りものなんだなぁ、<br />
と実感した今日この頃。<br />
<br />
皆さんも気をつけましょう。]]> 
    </content>
    <author>
            <name>B.P</name>
        </author>
  </entry>
  <entry>
    <id>bypath.blog.shinobi.jp://entry/5</id>
    <link rel="alternate" type="text/html" href="http://bypath.blog.shinobi.jp/c---c-/c--%20-%20%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC" />
    <published>2008-09-01T21:14:01+09:00</published> 
    <updated>2008-09-01T21:14:01+09:00</updated> 
    <category term="C++/C#" label="C++/C#" />
    <title>C++ : 文字列のコピー</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[■C言語で文字列のコピーと言ったら、<br />
<br />
strcpy , _tcscpy_s　<br />
<br />
とか使いますが、 Windowsにおいてはもうちょっとイロイロ意識しなくちゃいけません。<br />
<br />
基本的に、SHIFT-JISを使っている場合が多いので、一概に&rdquo;文字列&rdquo;と言っても、１Byte文字と２Byte文字が混在していることが多いのです(&acute;・&omega;・`)<br />
<br />
&rdquo;文字を何文字コピー&rdquo;なら大して意識しなくてもいいんですが、<br />
&rdquo;文字を何Byteコピー&rdquo;の場合は、このあたりを意識して欠かなくちゃいけません。<br />
<br />
UNICODEだったらそんな問題もないんですが&hellip;＼(^o^)／<br />
<br />
<br />
■んで、どうしたかというと。<br />
<p id="f0vz">LPTSTR lstrcpynEx(LPTSTR lpszDest, LPCTSTR lpszSrc, int iSize)<br id="f0vz6" />
{<br id="f0vz7" />
&nbsp; &nbsp; &nbsp; // 0Byteのコピーはありえない <br id="f0vz8" />
&nbsp; &nbsp; &nbsp; // 1Byteコピーの場合は先頭にNULLを格納して返却<br id="f0vz9" />
&nbsp;&nbsp; &nbsp; &nbsp;if(iSize &lt;= 0)<br id="f0vz10" />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return NULL;<br id="f0vz11" />
&nbsp; &nbsp; &nbsp; if(iSize == 1){<br id="f0vz12" />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; *lpszDest = '\0';<br id="f0vz13" />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return lpszDest;<br />
&nbsp; &nbsp; &nbsp; }</p>
<p id="f0vz15">&nbsp; &nbsp; &nbsp; BOOL bFind = FALSE;<br id="f0vz16" />
&nbsp; &nbsp; &nbsp; for(int i=0 ; i&lt;iSize-1 ; i++){<br id="f0vz17" />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(!bFind &amp;&amp; (_istlead((unsigned int)lpszSrc[i]) != 0))<br id="f0vz18" />
&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bFind = TRUE;<br id="f0vz19" />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else<br id="f0vz20" />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bFind = FALSE;<br id="f0vz21" />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lpszDest[i] = lpszSrc[i];<br id="f0vz22" />
&nbsp; &nbsp; &nbsp; }<br id="f0vz23" />
&nbsp; &nbsp; &nbsp; if(bFind)<br id="f0vz24" />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lpszDest[iSize-2] = '\0';<br id="f0vz25" />
&nbsp; &nbsp; &nbsp; else<br id="f0vz26" />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lpszDest[iSize-1] = '\0';</p>
<p id="f0vz27">&nbsp; &nbsp; &nbsp; return lpszDest;<br id="f0vz28" />
}</p>
<br />
NByteの文字をコピーする場合に、<br />
文字列を戦闘から精査していって、NByte目の文字が２Byte文字の先行Byteかどうか判断して<br />
コピーするByte数を決めるやり方。<br />
<br />
Windowsプログラミングだと、&quot;N文字コピー&rdquo;よりも&quot;NByteコピー&quot;をすることのほうが<br />
多い気がするので&hellip;。<br />
<br />
もうちょっとステップ数は削れるような気もするけど、あまり削っても分かりにくくなるので、これくらいで(&acute;・&omega;・`)ｂ<br />
<br />
気に入らない人は改良してクダサイ。]]> 
    </content>
    <author>
            <name>B.P</name>
        </author>
  </entry>
</feed>