Back
新着表示
タイトル
記事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)
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事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) に変更すると良いとの情報も得ていますが、名前修飾の問題が解決出来ませんでした。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事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)
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事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++でチャレンジされた方があれば意見が聞きたいのですが。私だけの問題なのか(これなら、何か別の原因が関係していそうなので、調べなおさないといけないし)、同じ内容が出て回避されたのか。 趣味でやっていますから、気長にやっていきます。太田さんまた相談に乗ってください。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事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 で試して下さい。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事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) に変更すると良いとの情報も得ていますが、名前修飾の問題が解決出来ませんでした。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Win8.1 UAC の回避方法?
: 573
: 2014/09/25(Thu) 20:40:42
: JA2BQX 太田
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Win8.1 UAC の回避方法?
: 572
: 2014/09/25(Thu) 08:31:35
: JA2BQX 太田
皆さん、こんにちは。 最近、Win7で作成した自作ツールをWin8.1で動かすことがあります。 その際に監理者権限にしておいても毎回UACダイアログが表示されて 確認を求められます。 セキュリティの安全の為には必要な事ですが特定プログラムは回避するには どうすれば良いでしょうか? セキュリティ・ソフト、Win8.1での設定、VB2010やVB2013での回避方法など....? 皆さんはどうされていますか?
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: CQ 1 2 のチェックボックスの操作
: 571
: 2014/09/20(Sat) 08:49:31
: JA9AOB 銅子
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事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でした。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!