ホーム » 2015 (ページ 2)
年別アーカイブ: 2015
メモリのオーバーフロー
次の様なコードで,実行時にエラー.
i_DIB DIB_FlipVertical (const i_DIB& dib_)
{
i_DIB dib = dib_ ;
if (dib_.GetWidth () == 0) { return dib ; }
if (dib_.GetHeight() == 0) { return dib ; }
u_32* bits = (u_32*)dib.GetP_Bits() ;
for ( int y=0 ; y<dib.GetHeight()/2 ; y++) {
for (int x=0 ; x<dib.GetWidth() ; x++) {
u_32 sPos = x+dib.GetWidth()*( y) ;
u_32 dPos = x+dib.GetWidth()*(dib.GetHeight()- y) ;
u_32 tmp = *(bits+(dPos)) ;
*(bits+(dPos)) = *(bits+(sPos)) ;
*(bits+(sPos)) = tmp ;
}
}
return dib ;
}
原因は最初の dPos が画像の範囲を超えていること.これはすぐにわかったが,
デバッガで追いかけてもこのループは何もなかったかの様に通り,この関数を抜ける時にエラーとなる.
たまたまと言うこともあると思うが,MFC の配列を使用していればアクセスした段階で ASSERT されるのでは?
i_dib_f.hxx
AMF texture
AMF を調べていて,テクスチャ部分の変換テスト.
次の様なコードで,それぞれの色の成分の画像が出来ることを確認.
inline AMF_Texture AMF_texture_To (const Xml_E& tex_e)
{
AMF_Texture tex ;
if (tex_e.GetName() != AMF_texture) { return tex ; }
tex.ID = tex_e.GetAttribute(AMF_id) ;
tex.Width = ::ttou4 ( tex_e.GetAttribute(AMF_width)) ;
tex.Height = ::ttou4 ( tex_e.GetAttribute(AMF_height)) ;
tex.Texture = ::base64_decode(::To_v_char(tex_e.GetText())) ;
{
i_DIB dib ;
dib.Create(tex.Width,tex.Height) ;
for ( long y=0 ; y<dib.GetHeight() ; y++) {
for (long x=0 ; x<dib.GetWidth () ; x++) {
u_32 pc = *(dib.GetP_Pixel(x,y)) ;
u_32 argb = pc ;
if (unsigned(x+y*dib.GetWidth()) < tex.Texture.size()) {
u__8 c = tex.Texture[x+y*dib.GetWidth()] ;
argb = 0xff000000 + (c<<16) + (c<<8) + (c) ;
}
u_32* bits = (u_32*)dib.GetP_Bits() ;
*(bits+(x+y*dib.GetWidth())) = argb ;
}
}
tstring dibName ;
{
// …
dibName = outPath + _T("\\") + tex.ID + _T("_") + ::To_tstring(Count) + _T(".dib") ;
}
::HBITMAP_To(::ToHBITMAP(dib),dibName.c_str()) ;
}
return tex ;
}
1.5 M 位の bmp をテクスチャとして求め,それを数100個?生成していて,メモリ不足.
原因はすぐわかったが,この上のコードでもある様に ToHBITMAP() で求めた HBITMAP を DeleteObject してない.
次の様にする必要がある.
HBITMAP hBMP = ::ToHBITMAP(dib) ;
::HBITMAP_To(hBMP,dibName.c_str()) ;
::DeleteObject(hBMP) ;
幸いこの関係のコードを書いたのが今年になってからだったので,利用している部分は限定的.
検索をかけて変更が必要な所は 10 箇所程度?
多くは,デバッグ版でのみ実行されるコード.
AMF_Texture のデータメンバを protected に.
v_char AMF_Texture::GetTexture() を用意して,それを利用する様に変更すると,デバッグ版で遅い.
ここでの対応はすぐわかったが,この類のコードが相当ありそう.
参照の関係の理解が不十分なので,もう少し調べる必要あり.
error LNK2005 LNK2001
プロジェクト生成時に「MFC を使用しない」としたコンソール AP で Afx.h をインクルードした場合
リンク中…
nafxcwd.lib(afxmem.obj) : error LNK2005: “void * __cdecl operator new(unsigned int)” (??2@YAPAXI@Z) はすでに LIBCD.lib(new.obj) で定義されています
nafxcwd.lib(afxmem.obj) : error LNK2005: “void __cdecl operator delete(void *)” (??3@YAXPAX@Z) はすでに LIBCD.lib(dbgdel.obj) で定義されています
や
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル “__endthreadex” は未解決です
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル “__beginthreadex” は未解決です
プロジェクトの設定で「共有 DLL で MFC を使う」などに変更.
VC 10 でビルドした exe を XP で…
以前から VC10 以降でビルドした exe が Win XP 環境で起動できてなかった(ビルド環境の Win 7 では OK).
—————————
M—.exe – エントリ ポイントが見つかりません
—————————
プロシージャ エントリ ポイント K32GetProcessMemoryInfo がダイナミック リンク ライブラリ KERNEL32.dll から見つかりませんでした。
—————————
OK
—————————
日本語化された GetProcessMemoryInfo には書かれてないが,
こちら (GetProcessMemoryInfo function) には,Win 7 以降変わっているような記述がある.
対応としては App.h(アプリケーションクラスのヘッダファイル)に以下を追加した.
#ifndef PSAPI_VERSION
#define PSAPI_VERSION 1
#pragma comment (lib, “PSAPI.Lib”)
#else
#pragma message (“defined PSAPI_VERSION *************”)
#endif
MR03LN その後
2015/05/30 「AtermMR03LN 1B クレードルセット」と「ドコモminiUIMカードDN05m」が届く.
2015/06/01
暫く外出の予定がないので,SIM なしでどの様な使い方ができるかを試してみた.
クレードルがあるのでブリッジモードで運用しようと思ったが,ルータにLANの空きポートがない.
MR03LN の動作モード
そのため,一先ずレピータとしての運用となっている.
設定は,公衆無線LANの設定の「手動設定」でアクセスポイントを登録.
理由は,私が平日一番長く居る部屋で 107SH のWi-Fi が不安定なため.
以前レピータを購入して使用してみたが,効果が低かった.
2015/06/02
107SH 自体がそれなりなので,何とも言えない部分もあるが…
MR03LN との接続で,Wi-Fi ではそれ程問題なく動作していると思う.
Bluetoothでの接続がよくわからない.
107SH の Wi-Fi 機能を OFF にすれば安定してつながっているが,ON にすると Bluetooth の接続が解除される.
どこの問題かは不明.単なる仕様?
iPod touch では Bluetooth もそれなりに動作しているように感じる.
2015/06/03
昨日,ルータに有線LANで接続して,ブリッジモードで接続してみたが…
どこか設定が悪いのか,あまり使い勝手が良くない?
それとも,ルータの設定を変更すると,暫くの間安定しない?
SIM を挿してLTEなどでの動作を確認.
「LTE/3G」と「公衆無線LAN」を切替えた時に,暫く Wi-Fi 接続の107SH の動作が安定しない気がする.
MR03LN も,どういうタイミングかわからないが勝手に切り替わってしまう時がある様に感じる.
充電中などの時,MR03LN のディスプレイの表示時間をもっと長くできたら良いのに.
2015/06/14
スイッチングハブ EHC-G05PA-W-K を購入.
ブリッジモードで接続してみたが,やはりイマイチ.
使い方(設定)が悪いのかわからないが,私の環境でのうまい使い方が見いだせない.
やはり,レピータとしての運用が合ってそう.
ファイル数
あるフォルダに,ユーザが作成した 3D データを,自動でファイル名を振って保存する様にしている.
但しファイル名の一部はユーザ指定.
ロジック上は,36^4 で 1,679,616 管理できるはず.
これがいっぱいになったと言われて…
通常の運用であれば,1 日に 100 個はかなりきつい.
それでも 16,000 日かかる.
そんなことがあり,ファイル名の空きを検出するツールを作成中.
かなり前の事だが,iRMX の FD のフォーマット?で,指定しないと 200 個位がデフォルトだったと記憶している.
NTFS ではその様なことはないと思ってたが,はっきりした情報があったのでメモ.
TechNet – ファイル システム
BIGLOBE 申込み
本当は,申し込み手続きの確認が目的で 996-962 に電話したのに…
MR03LN のセットの場合,在庫が残り僅かと言われて…
申し込んだのは,エントリープラン + モバイルルータ Aterm MR03LN クレードルセット .
「SMSオプション対応SIMカード」は,私にはあまり必要なさそうだったので付けなかった.
1,835 + 税 とのこと.他に,申し込み手数料.
電話で確認したかったのは次の様な事.
格安 SIM の申し込み手続きの多くが,Web 申込みでクレジットカードが要求される.
本当は「口座振替」が良かったのだが,ルータとのセットの場合は不可とのこと.
今日の電話で申し込みとなったので,後日手続きの書類が届き,記入して返送すれば SIM カードなどが届くらしい.
気が向いたらその時またレポートします.
MR03LN のセットが僅かと言われたことで電話の後ちょっと検索してみた.
どうも後継の MR04LN と言うのが近いうちに出るみたいな情報が見つかる.
今手に入る情報の範囲で,私の使用目的では 03 も 04 も大差はなさそう.
2015/05/20
これを機に通信費を見直し.
PXI02141 は解約.
alles.or.jp も解約と思って調べてたら,メールアドレスのみを残す方法があるみたい.
あまり詳しく書かれてなかったので,電話したら,変更のための書類を送ってもらえるとのこと.
2 ~ 3 ヶ月前に見た時は,この様な情報はなかったと思う.
そのため幾つかの登録アドレスを徐々に別のものに変更していたのに…
2015/05/22
今日 BIGLOBE の LTE・3G データ SIM の所を見ると,モバイルルータとセットになった申し込みがなくなっている.
昨日 BIGLOBE から,会員証や「支払方法登録申込書」などが届いた.
クリップボードに…
オフスクリーンにレンダリングしたものをクリップボードにコピーしていて,
5000x5000x4 バイトの CF_BITMAP がうまく動作しない.
原因は Office クリップボードの制限みたいで 8 M まで.
Office クリップボードにアイテムを追加できない場合の確認事項
無効にして対応.
よくわからないが,以下の様にした.
CF_METAFILEPICT StretchDIBits
CF_BITMAP AlphaBlend
AlphaBlend function (Windows) – TechNet – Microsoft に,
An error occurs (…) if the source device context identifies an enhanced metafile device context.
コピー画像は,
いろいろやっていて,一度 EMF に吐いて
::GetEnhMetaFile(…) で返される HENHMETAFILE を CF_ENHMETAFILE で意図した動作となった.
{
CString tmpPath = ::GetTempPath() ;
tmpPath = CString(::Path_AddLastSP(tmpPath).c_str()) + _T(“Debug.tmp”) ;
tmpPath = CString(::Path_AddLastSP(tmpPath).c_str()) + ::GetFileTitle(::GetModuleFileName()) ;
CString nowStr = CTime::GetCurrentTime().Format(_T(“%d%H%M%S”)) ;
CString tmpName = CString(::Path_AddLastSP(tmpPath).c_str()) + nowStr + _T(“.emf”) ;
::CreateFolder(tmpPath) ;
::ToEMF(dib,tmpName) ;
HENHMETAFILE hMetaFile = ::GetEnhMetaFile(tmpName) ;
return hMetaFile ;
}
…
::SetClipboardData(CF_ENHMETAFILE, hGMemEnhM) ;
i_DIB_x.hxx
i_DIB_Fn.hxx
i_dib.hxx
今度はメモリメタファイル(第 2 引数を NULL)にして,
{
CMetaFileDC mf_DC ;
BOOL ret = mf_DC.CreateEnhanced(NULL,NULL,NULL,NULL) ;
::AlphaBlend (mf_DC.GetSafeHdc(),dRect,dib) ;
HENHMETAFILE hEnhMetaF = mf_DC.CloseEnhanced() ;
return hEnhMetaF ;
}
CreateEnhanced の幾つかの引数が NULL は知らなかった.
CreateEnhMetaFile
Programming Windows 5 18.2.2
Programming Windows 5
XP 環境のクリップブックや,Word 2003 などでの CF_METAFILEPICT がうまくない.
{
CMetaFileDC mf_DC ;
BOOL ret = mf_DC.Create() ;
::StretchDIBits (mf_DC.GetSafeHdc(),dRect,dib) ;
HMETAFILE hMetaFile = mf_DC.Close() ;
hGMemMeta = ::GlobalAlloc( GHND, (DWORD) sizeof(METAFILEPICT)) ;
{
LPMETAFILEPICT lpMFP = (LPMETAFILEPICT)GlobalLock(hGMemMeta) ;
lpMFP->mm = MM_TEXT ;
lpMFP->xExt = dRect.right ;
lpMFP->yExt = dRect.bottom ;
lpMFP->hMF = hMetaFile ;
}
::GlobalUnlock(hGMemMeta) ;
return hGMemMeta ;
}
StretchDIBits とした.
Win 10 TP 10061
Build 10061 に更新.
VirtualBox だからなのかわからないが,OpenGL を利用している exe で真っ黒になってしまう.
Vista になった時,一部の環境やオフスクリーンの場合に同様の現象だったと記憶している.
DescribePixelFormat , SetPixelFormat 辺り?
Build 9926 では問題なかったと思う(9879 では問題ない).
exe によっては起動しなかったり,アプリケーションエラーになる.
他に,どこかの設定かわからないが,エクスプローラから AP にドキュメントのドロップが出来ない?
2015/06/03
Build 10130 で,OpenGL での描画が真っ黒になる動作は解消されている.
vsdrfCOM でエラー
VS 2005 のセットアッププロジェクトで,exe の「Register」を「vsdrfCOM」としてビルドすると,
—————————
AsTM0317.exe – アプリケーション エラー
—————————
“0x5cac9a9c” の命令が “0x0000005c” のメモリを参照しました。メモリが “read” になることはできませんでした。
プログラムを終了するには [OK] をクリックしてください
—————————
OK
—————————
—— ビルド開始: プロジェクト: TestSet3, 構成: Debug ——
ファイル ‘C:\…\TestSet3\TestSet3\Debug\TestSet3.msi’ をビルドしています…
警告: ‘AsTM0317.exe’ というファイルのレジストリ情報を作成できません。
警告: Windows インストーラは、どの選択された必須コンポーネントにも含まれていません。
ファイル ‘AsTM0317.exe’ をパッケージしています…
ファイル ‘AsImgCnv.exe’ をパッケージしています…
========== ビルド: 1 正常終了または最新の状態、0 失敗、0 スキップ ==========
AsImgCnv.exe の方はエラーの表示はない.
VS 2002 や 2008 では,OK.
また,vsdrfCOMSelfReg の場合も OK.
2015/03/20
vsdrfCOMSelfReg とした場合,そのままではインストール時にダイアログから表示されていた.
/RegServer , /UnRegServer が指定された場合,ダイアログを表示しない様に対応.
BOOL isReg = FALSE ;
{
if (::FindNoCase(m_lpCmdLine,_T( “/REGSERVER”)) >= 0) { isReg = TRUE ; }
else if (::FindNoCase(m_lpCmdLine,_T( “-REGSERVER”)) >= 0) { isReg = TRUE ; }
else if (::FindNoCase(m_lpCmdLine,_T(“/UNREGSERVER”)) >= 0) { isReg = TRUE ; }
else if (::FindNoCase(m_lpCmdLine,_T(“-UNREGSERVER”)) >= 0) { isReg = TRUE ; }
}
if (!isReg) {
CAsImgCnvDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK) {
}
else if (nResponse == IDCANCEL) {
}
}
IIS での ActiveX.exe
次の様なコードで,環境により?サーバの exe が終了されないことがある.
dim oHV
set oHV = Server.CreateObject(“AsHVXxx.Application”)
Response.Write “AsHV….App ” & oHV.GetVersion & “<br>” & vbCrLf
set oHV = Nothing
AsHVxx.exe ~.Application のみ
Win XP , 7 とも正しく終了する.
PAtoXx.exe
Win XP 環境で,デバッグ版 exe は OK .
Win 7 では正しく終了している.
2015/02/19
PAtoXx.exe の OnInitDialog で,環境設定用のダイアログが表示されて止まってしまっていた.
で,単純にメッセージボックスなどを表示しているならばすぐわかったはずだが,…
普通の exe としての起動の場合は,ダイアログは表示されない.
ASP のオートメーションとして起動された場合は,見えないがダイアログが表示されて止まっている.
ダイアログが表示される条件は,設定値が正しいフォルダをさしていない場合.
c:\ProgramData\… の様にローカルをさしている場合は,どちらの起動でもダイアログが表示されないで処理を継続.
\\T54W7U64\Documents\… の場合,当然であるが単純起動の exe では OK でダイアログは表示されない.
これが ASP から起動されると _taccess で正しく判断できず,ダイアログが表示されて止まっている.
CFile::GetStatus でもうまく判断できない?
2015/02/24
MFC クラスウィザードからの「クラスの新規作成」で 「CCmdTarget」 「タイプ ID で作成」したものも終了されない?
利用している所は次の様な感じ.
set oM_P_ = Server.CreateObject(“AsXxxxX.Path”)
デフォルトで作成されている ~.Application を利用することで終了できる.
set oM_S_ = Server.CreateObject(“AsXxxxx.Application”)
この動作は,vbs でも同様に確認できる.
2015/03/05
AsXxxS.exe を修正していて Win 7 環境で,
Server オブジェクト エラー ‘ASP 0177 : 80080005’
Server.CreateObject に失敗しました
/Test/Test_3rd/D_Path_1.asp, 行 7
80080005
XP 環境では OK .
設定関連の漏れがあると思うが,それまで通っていたのでコードを変更.
以下が新しく追加した部分
{
#if defined _UNICODE
folder = ::FolderAddLastSP(folder) + _T(“WC”) ;
#elif defined _MBCS
folder = ::FolderAddLastSP(folder) + _T(“MB”) ;
#endif
// ::CreateFolder(folder) ;
if (::FolderIsNothing(folder)) {
if (::CreateDirectory(folder,NULL)) { folder = folder+_T(“\\”) ; }
}
}
最初 CreateFolder としていた所を,CreateDirectory に変更することで対応.
この関数は,デバッグ情報をファイルに出力しているが,Win 7 環境ではファイルが生成されてない.
%Temp% (c:\Windows\Temp) 以下に AsImgCnv….\EMF などのフォルダを作成して,生成した emf を保持している.
綺麗な状態に戻そうとして,EMF フォルダを削除して実行すると,
エラー ‘80010105’
/Test/Test_2nd/CallAS/E/SelectPage.asp, 行 148
AsImgConv… フォルダのアクセス権を変更してしまった事が原因か?
どの様に設定すべきかわからず,AsImgCnv… フォルダをエクスプローラで削除して対応.
もう一回,うまく行っている状態で EMF フォルダを削除.
どうも設定ではなくコードが悪いみたいで,影響していそうな所を見てみると,
CacheFile::GetFolder で ::CreateFolder を呼んでいる.
::CreateFolder を MFC を使用していない ::Folder_Create に置換えてみた.
停止(’ASP 0177 : 80080005’)することはなくなったが,まだ何かありそう.
EMF のフォルダが生成されない.
2015/03/10
結局,%Temp% は利用しない様に変更した.
どういう条件かわからないが,c:\Windows\Temp\DbgDump\ にはデバッグ情報が正しく出力されてなかった.
(Win XP では意図した動作だったと思う)
2015/03/30
%Temp% でなく Public\Documents\ 以下にしたが,それだけでは完全ではなさそう.
アクセス権の関係と思うが,パブリックフォルダの共有設定が必要?
IIS 環境の再設定
2019/12 Win10 IIS 環境に Classic ASP のインストールと設定
2020/10 https://jml.mish.work/various/iis.html
AsTrmM_VC8 が動作しない.
—————————
Microsoft Visual C++ Runtime Library
—————————
Runtime Error!
Program: C:\Temp\…\Release.080\AsTM0129.exe
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application’s support team for more information.
—————————
OK
—————————
AsTrmM_VC6 は OK .
どうも OpenMP がうまくない?
Win 7 で,Classic ASP は「World Wide Web サービス」-「アプリケーション開発機能」-「ASP」をチェック.
Win10 Classic ASP インストール
以前 XP に設定した時のメモ.
Web ページの公開
2015/02/16
asp ファイルが存在する所を開くと,
サーバー エラー
500 – 内部サーバー エラーです。
検索中のリソースに問題があるため、リソースを表示できません。
サーバ側で動かすと,
An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click here to find out more about this error.
どうもデフォルトでは出力されなくなったみたい.
今度は次の様なコードで実行時エラー.
dim oToPA
set oToPA = Server.CreateObject(“PAto.AsXxx”)
Microsoft VBScript 実行時エラー エラー ‘800a01ad’
ActiveX コンポーネントはオブジェクトを作成できません。
/Test/Test_1st/DrawVer.asp, 行 6
Win XP では ActiveX.exe を起動すれば良かったが,Win 7 では「管理者」とする必要があるので,
「コマンドプロンプト」を「管理者として実行」して,その中で exe を起動.
アクセス権が許可されてないと,
Server オブジェクト エラー ‘ASP 0178 : 80070005’
Server.CreateObject アクセス エラー
/Test/Test_1st/DrawVer.asp, 行 6
許可を確認中に Server.CreateObject の呼び出しに失敗しました。
このオブジェクトへのアクセスは拒否されます。
アクセス権を設定.
Win 7 では IUSER .
OS が 64 ビットの時,そのままでは ActiveX.dll が起動しない.
他の PC から,http://win7-iis:8080/ の様に接続できない(localhost:8080 は可能).
対応方法がよくわからないが,ファイアウォールの設定で 8080 を追加してみたら通る様になった.
2015/02/17
サーバのオートメーション機能で ini に設定値を保持しているが更新されない
(IUSER はフルコントロールとして存在している).
Everyone の追加で意図した動作(ini を更新できる)にはなった.
Win 10 TP
Win 10 TP JP 9926 を入れてみた.
詳しく調べてないが,幾つか気になったことを.
VerifyVersionInfo で取る様に直したと思うが,6.2 として認識している?
ウィンドウのフレームの幅が広い?
ドロップダウン付きのツールバー?で,後ろのボタンが切れてしまうことがある.
Web に上げた exe だと?
VC 8 で _ATL_VER が定義される?
先日書いたコードを MFC ダイアログベースの AP で利用してみると,CRegKey の未定義エラー.
コードは,次の様に「_ATL_VER が定義されていれば…」としている.
#ifdef _ATL_VER
CRegKey reg ;
…
#endif
—— ビルド開始: プロジェクト: SmpMG, 構成: Debug Win32 ——
コンパイルしています…
SmpMGDlg.cpp
…\i_RegGet.hxx(36) : error C2065: ‘CRegKey’ : 定義されていない識別子です。
…\i_RegGet.hxx(36) : error C2146: 構文エラー : ‘;’ が、識別子 ‘reg’ の前に必要です。
…\i_RegGet.hxx(36) : error C2065: ‘reg’ : 定義されていない識別子です。
…\i_RegGet.hxx(37) : error C2228: ‘.Open’ の左側はクラス、構造体、共用体でなければなりません
…\i_RegGet.hxx(39) : error C2228: ‘.QueryDWORDValue’ の左側はクラス、構造体、共用体でなければなりません
SmpMG – エラー 5、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
VC 6 や,VC 8 のコンソール AP としての利用はうまくいっている.
自分で書いた部分では,_ATL_VER が定義される様なインクルードは追加してない.
_ATL_VER は (VS8)\VC\atlmfc\include\AtlDef.h にある.
StdAfx.h でインクルードしているものを順に追いかけていくと,
AfxDisp.h 内で Atlナントカ.h がインクルードされている.
同様の部分の VC 6 の方では Atl~.h はなさそう.
どの様にするのがベターなのかわからないが,AtlBase.h をインクルードする様にした.
#ifdef _ATL_VER
#include <AtlBase.h>
#endif
‘新しいテキスト ドキュメント.txt’ …
ちょっと変な状態に陥ったのでメモ.
\\DevS\Documents\MICS\Plan\MICSDat\Test_2015 01-03\9LM-2U-J6TRi-2S7M.001\
\\DevS\Documents\MICS\Plan\MICSDat\Test_2014_12\ などでは
[Window Title]
ファイルを作成できません
[Content]
ファイル ‘新しいテキスト ドキュメント.txt’ を作成できません。
開かれている共有ファイルが多すぎます。
[OK]
\\DevS\Documents\MICS\Plan\MICSDat\ だと戻ってこない(エクスプローラが応答なしになる)
\\DevS\Documents\MICS\Plan\ などでは正しく生成できる.
ログオフ時,\\DevS\Documents\MICS\Plan\MICSDat\新しいテキスト ドキュメント.txt ができていた.
再ログオン後,直後はできなかったがしばらくすると可能となった.
現象はどーってことない(再起動すれば直る)が,
問題は,MFC で作成した普通の AP でドキュメントが消失したこと.
その AP は,自動的に %Temp% にバックアップを保持するので完全に失ったわけではないが,
標準の MFC のシリアライズ動作ではうまくないのか?
VC 6 UNICODE C2664 , C2679 …
VC 6 コンソール AP で _UNICODE とした時,部分的に効いていない?様なエラー.
--------------------構成: T_RegKey - Win32 Release-------------------- コンパイル中... T_RegKey.cpp ...\_s_func.hxx(71) : error C2664: 'wcscpy' : 1 番目の引数を 'char *' から 'unsigned short *' に変換できません。 ...\_s_func.hxx(72) : error C2664: 'wcslen' : 1 番目の引数を 'const char *' から 'const unsigned short *' に... ...\StringFn.hxx(277) : error C2679: 二項演算子 '=' : 型 'unsigned short [3]' の右オペランドを扱う演算子は定義... ...\StrAryFn.hxx(118) : error C2665: 'wcspbrk' : 2 のオーバーロードは 1 番目の引数を 'char *' から要求の型に変換... ... T_RegKey.obj - エラー 86、警告 0
先頭で #include <Afx.h> などとすればコンパイルは通る.
または,次の様に UNICODE を定義すれば良いみたい.
#ifdef _UNICODE
#ifndef UNICODE
#define UNICODE
#endif
#endif
以前にも同じことを書いていた.
#include <Afx.h> などを追加した場合は,
--------------------構成: T_RegKey - Win32 Release-------------------- リンク中... uafxcw.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__endthreadex" は未解決です uafxcw.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__beginthreadex" は未解決です c:\...\Release.060/T_RegKey.exe : fatal error LNK1120: 外部参照 2 が未解決です。 link.exe の実行エラー T_RegKey.exe - エラー 3、警告 0
「プロジェクトの設定」-「一般」の「M..F..C..」で「共有 DLL で MFC を使用」などとする.
UNICODE の定義は,(VS12)\VC\AtlMFC\Include\AfxV_W32.h を参照して i_Define.hxx に追加した.
Windows.h より前に UNICODE が定義されてない場合は,i_Define.hxx をインクルードすれば良い.
2020/09 コンソール AP での define