HAMLOG プログラム開発室


新着表示
タイトル
記事No
投稿日
投稿者

Re: VC++ Run-Time Check Failure #0
579
2014/09/30(Tue) 21:45:26
JO1SIM・出島
銅子OM

JO1SIMでしまです。

浜田OMのフォローが、まさにそのことでした。


浜田OM> #define WINAPI __stdcall  だったような。。。

ただ、動的によびだしたとしても、この辺のキャストを誤ると動かないはずではあったと思いますが。(謎)

失礼しました。


> >  C++系はポインターを自由に使えるので便利なんですが。バグも出やすいのですね。DLLの動的リンクとかの手法で何とか動きそうなのですが、何かスマートでない気がするのと、何か問題がありそうで気分が良くないのですね。
>
> Hamlog50.dllは昔ながらのShift-JISで、VC++はUnicode という違いが
> あるかと思いますが、その辺の型の宣言やキャストをうっかりすると、
> バグってしまうかと思います。
> まぁ、それは十分にご承知のことと思いますが。
>
> 動的リンクならOKということは、インポートLIBに問題ありでしょうか。
> なお、関数の型は、__cdeclではなく__stdcallで宣言してます。
> 確か、Borland C++では、
> #define WINAPI __stdcall  だったような。。。
>
> スタックに渡す順序が逆になるのでしょうね。
>
> ちなみに、私の場合、VC++は大昔のVC++ 5.0使ってます。Hi
>
> こんな宣言になってますが。。。Borland C++ 5.0
> int WINAPI __export HamlogOpen( 
>   int WINAPI (* func)(char *), // NULLでOK
>   TThLog *,
>   const char *, // HAMLOG.MST
>   const int)
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: VC++ Run-Time Check Failure #0
578
2014/09/30(Tue) 21:39:27
JO1SIM・出島
銅子OM

JO1SIM出島です。
CWでお世話になっています!!!

コンパイルのオプションのお話から察するに、VS2013(Express for Windows Desktop?)でWin32プラットフォームの開発状態であると思いますのでその前提でお話しします。

動的リンクで成功するということですので、やはり呼び出し規則だけの問題だと思います。コンパイルオプションではなく、呼び出す関数だけ…

extern "C"
{ int __stdcall THW_read(TThLog *,...);
:};


みたいな宣言ではダメでしょうか? extern "C" は関数名のみで名前を解決するために必要で、__stdcallは hamlog50.h にWINAPIとして定義してある通り、APIのコール方法を規定してます。
.
..そういう私もDLLが呼び出せないときを想定し、動的リンクで呼び出してますが…。


> The value of ESP was not properly saved across a function call.が出てうまくいきません。
> VS2013VC++ で Hamlog50.dllを使ってHamlogの操作をしたいのです。
> アクセスに必要なHamlog50.Libも作成し関数にはextern "C" __declspec(dllexport) 及びextern "C" __declspec(dllimport)を付け
> DLL作成時も含めて__cdecl(/Gd) オプション(標準)で行っています。
> これで名前修飾もなくビルドはエラーがでず完了します。
> ところが、デバッグを行うとHamlog50.dllを呼び出す関数のところでこの警告が出てしまいます。 GetThdllVersion()等の様に引数の無いものは大丈夫なようですが(当たり前ですか)、SetDbsShare_VC(0)と単純なものでも発生します。
> 一方やむなく、 LoadLibrary(L"Hamlog50.dll")
> GetProcAddress(hDLL, "HamlogOpen")
> などからコールする方法では問題なくアクセス出来ることも確認しています。何か解決策がありそうなんですが。この辺の処うまく切り抜けておられる方アドバイスお願いいたします。
> C++側の呼び出し規約を __stdcall (/Gz) に変更すると良いとの情報も得ていますが、名前修飾の問題が解決出来ませんでした。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: VC++ Run-Time Check Failure #0
577
2014/09/29(Mon) 21:52:20
JG1MOU浜田
>  C++系はポインターを自由に使えるので便利なんですが。バグも出やすいのですね。DLLの動的リンクとかの手法で何とか動きそうなのですが、何かスマートでない気がするのと、何か問題がありそうで気分が良くないのですね。

Hamlog50.dllは昔ながらのShift-JISで、VC++はUnicode という違いが
あるかと思いますが、その辺の型の宣言やキャストをうっかりすると、
バグってしまうかと思います。
まぁ、それは十分にご承知のことと思いますが。

動的リンクならOKということは、インポートLIBに問題ありでしょうか。
なお、関数の型は、__cdeclではなく__stdcallで宣言してます。
確か、Borland C++では、
#define WINAPI __stdcall  だったような。。。

スタックに渡す順序が逆になるのでしょうね。

ちなみに、私の場合、VC++は大昔のVC++ 5.0使ってます。Hi

こんな宣言になってますが。。。Borland C++ 5.0
int WINAPI __export HamlogOpen( 
  int WINAPI (* func)(char *), // NULLでOK
  TThLog *,
  const char *, // HAMLOG.MST
  const int)
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: VC++ Run-Time Check Failure #0
576
2014/09/27(Sat) 21:36:08
JA9AOB 銅子
> 確か Hamlog50.dll や THDLL2VB.DLL は  .NET Framework は 3.5 で無いと一部に不具合があるような...。
>
> 3.5以外でお使いなら .NET Framework3.5 で試して下さい。 
.NET Frameworkはあまり意識しないでやっていますが、関係あるのですかね。色々勉強中です。
 C++系はポインターを自由に使えるので便利なんですが。バグも出やすいのですね。DLLの動的リンクとかの手法で何とか動きそうなのですが、何かスマートでない気がするのと、何か問題がありそうで気分が良くないのですね。あるとき突然一致も察知も動かなくなるような。VC++でチャレンジされた方があれば意見が聞きたいのですが。私だけの問題なのか(これなら、何か別の原因が関係していそうなので、調べなおさないといけないし)、同じ内容が出て回避されたのか。
 趣味でやっていますから、気長にやっていきます。太田さんまた相談に乗ってください。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: VC++ Run-Time Check Failure #0
575
2014/09/27(Sat) 10:43:07
JA2BQX 太田
こんにちは。
VB2010を常用なのでC関係は分からないので難しい事は分かりませんが、
確か Hamlog50.dll や THDLL2VB.DLL は  .NET Framework は 3.5 で無いと一部に不具合があるような...。

3.5以外でお使いなら .NET Framework3.5 で試して下さい。 
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

VC++ Run-Time Check Failure #0
574
2014/09/27(Sat) 07:51:26
JA9AOB 銅子
The value of ESP was not properly saved across a function call.が出てうまくいきません。
VS2013VC++ で Hamlog50.dllを使ってHamlogの操作をしたいのです。
アクセスに必要なHamlog50.Libも作成し関数にはextern "C" __declspec(dllexport) 及びextern "C" __declspec(dllimport)を付け
DLL作成時も含めて__cdecl(/Gd) オプション(標準)で行っています。
これで名前修飾もなくビルドはエラーがでず完了します。
ところが、デバッグを行うとHamlog50.dllを呼び出す関数のところでこの警告が出てしまいます。 GetThdllVersion()等の様に引数の無いものは大丈夫なようですが(当たり前ですか)、SetDbsShare_VC(0)と単純なものでも発生します。
一方やむなく、 LoadLibrary(L"Hamlog50.dll")
GetProcAddress(hDLL, "HamlogOpen")
などからコールする方法では問題なくアクセス出来ることも確認しています。何か解決策がありそうなんですが。この辺の処うまく切り抜けておられる方アドバイスお願いいたします。
C++側の呼び出し規約を __stdcall (/Gz) に変更すると良いとの情報も得ていますが、名前修飾の問題が解決出来ませんでした。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: Win8.1 UAC の回避方法?
573
2014/09/25(Thu) 20:40:42
JA2BQX 太田
皆さん、こんにちは。

Webであれこれ検索して下記を見つけて試したら回避出来たようです。

1. 下記をダウンロードし、インストールする。

Windows で起動中のアプリケーションに影響を与えにくいメモリの開放 - 軽い動作の Wise Memory Optimizer
http://jutememo.blogspot.jp/2013/03/windows-wise-memory-optimizer.html


2.下記をダウンロードし、インストールする。

特定のアプリケーションを実行するときに「ユーザアカウント制御」ダイアログを表示させない
- Compatibility Administrator で「カスタムの互換修正プログラム」を作成する
http://jutememo.blogspot.jp/2013/05/compatibility-administrator.html

上記の説明の中の下記からです。
[c. Compatibility Administrator のインストールと実行]

•ApplicationCompatibilityToolkitSetup.exe をダウンロードして、インストールする。

3.Wise Memory Optimizer.exe を実行する。


* 上記は全て、あくまでも個人の責任において行って下さい。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Win8.1 UAC の回避方法?
572
2014/09/25(Thu) 08:31:35
JA2BQX 太田
皆さん、こんにちは。
最近、Win7で作成した自作ツールをWin8.1で動かすことがあります。
その際に監理者権限にしておいても毎回UACダイアログが表示されて
確認を求められます。
セキュリティの安全の為には必要な事ですが特定プログラムは回避するには
どうすれば良いでしょうか?
セキュリティ・ソフト、Win8.1での設定、VB2010やVB2013での回避方法など....?

皆さんはどうされていますか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: CQ 1 2 のチェックボックスの操作
571
2014/09/20(Sat) 08:49:31
JA9AOB 銅子
> CQ 1 2 のチェックボックスの操作は、未実装でした。
> ちょっと作ってみました。お試しください。
> http://hamlog.no.coocan.jp/mou/soft/Hamlogw.zip
>

確認いたしました。有難うございました。無事作動いたしました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: CQ 1 2 のチェックボックスの操作
570
2014/09/20(Sat) 07:12:43
JA2BQX 太田

こんにちは。
浜田さん、ありがとうございます。

> CQ 1 2 のチェックボックスの操作は、未実装でした。
> ちょっと作ってみました。お試しください。

VB2010で試してみました。 Win7 64bit版
対象のフレームワーク .NET Framework 3.5
プラットフォーム アクテイブ x86

単独と複数組み合わせでもOKでした。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop