新着表示
タイトル
記事No
投稿日
投稿者
: enum freq_tag のMAXBAND SATELLITEの件
: 586
: 2014/10/02(Thu) 08:36:41
: JA9AOB 銅子
Hamlog50の FreqPCheck()で得る結果が
enum freq_tag の中で、SATELLITE とMAXBAND の関係がどうしても逆の結果になるような気がするのですが、如何でしょうか。
0.135 0.500 等を入れると 16
145/435 435/145 等で 15
が返ってくるのですが。これでいいのですか???。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: VC++ Run-Time Check Failure #0
: 585
: 2014/10/02(Thu) 07:30:25
: JA9AOB 銅子
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: VC++ Run-Time Check Failure #0
: 584
: 2014/10/02(Thu) 07:17:49
: JA9AOB 銅子
__stdcall を指定すると extern "C"を付けても名前修飾が付くので
更にDEFで指定することで、名前修飾を取ることが出来ました。
Lib作成時にこの手法で行い、このLibでLinkを行うと無事静的にLink出来ました。もちろん、Hamlog50の関数はextern "C" や__stdcall を付けたHamlog50.hを作成しての話ですが。
やっと安心して続けられます。スタックOverなんて心配で本気になれませんでした。ではまたご指導ください。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: VC++ Run-Time Check Failure #0
: 583
: 2014/10/01(Wed) 21:46:21
: JO1SIM・出島
でしまです。
Netには__stdcallを指定すると extern "C"が利かなくなるというような書き込みもありますね・・・。ただ、extern "C" + __stdcallの構造はwindows.hとまったく同じなので、その中にヒントがあるかもしれません。
WinGDI.h等を見ると
extern "C"
{__declspec(dllimport) int __stdcall THW_update(...)}
と等価のような書きぶりのようです。(要は「全部つける」?)
「dllimport」の部分はDEFファイルを使っての解決することと同義かと思います。
動的リンクの場合のポインタの保管ですが、私のところではHamlog50.dllについてはLoadLibraryしてからFreeLibraryするまでの間で関数のポインタを保持しておいてもうまく動いてます。(THW2VBNET.DLLの場合では都度GetProcAddressしてますが…)
> >
> > JO1SIM出島です。
> > CWでお世話になっています!!!
> 最近ご無沙汰ですね。相変わらずCWでAJA追っかけ中です。
>
> >
> > コンパイルのオプションのお話から察するに、VS2013(Express for Windows Desktop?)でWin32プラットフォームの開発状態であると思いますのでその前提でお話しします。
> >
> > 動的リンクで成功するということですので、やはり呼び出し規則だけの問題だと思います。コンパイルオプションではなく、呼び出す関数だけ…
> >
> > extern "C"
> > { int __stdcall THW_read(TThLog *,...);
> > :};
> >
> >
> > みたいな宣言ではダメでしょうか? extern "C" は関数名のみで名前
> >を解決するために必要で、__stdcallは hamlog50.h にWINAPIとして>義>してある通り、APIのコール方法を規定してます。
> 仮のLibを作る際にも同じ指定を行い、使用する際にも指定しないと、リンクの際にエラーが出ます。__stdcall を指定すると extern "C"を付けても名前修飾が付くんですね。__cdeclではこれを付けると名前修飾が付かない。
>
> > .
> > ..そういう私もDLLが呼び出せないときを想定し、動的リンクで呼び出してますが…。
> 皆さん有難うございます。
> やはり、__stdcall でしたか。だけどこれを指定すると、 extern "C"を指定しても、_XXXXX@ の名前修飾が付き解決出来ませんでした。depends で見るとLink状況が確認できますので。結局動的リンクで皆さん運用しているのですね。引数のない関数 Verチェックは問題なく 動くので引数の受け渡しの問題だと思っていたのですが。皆さん動的で行っておられるならこれで行きます。それにしてもなぜこちらだといけるのかな。
> 動的リンクの場合 ポインターを保存しても駄目だと言う事が書いてあるので使用の際にDLL 関数のポインターを新たに取得していますが、やはり一つのサブルーチン内だけで使へと言う事ですかね。初期化で一括ポインターを取得して、あちこちで使えれば、普通のリンクと同じで使いやすいのですが。皆さんアドバイス有難うございました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: VC++ Run-Time Check Failure #0
: 582
: 2014/10/01(Wed) 19:01:55
: JG1MOU浜田
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: VC++ Run-Time Check Failure #0
: 581
: 2014/10/01(Wed) 06:45:49
: JA9AOB 銅子
>
> JO1SIM出島です。
> CWでお世話になっています!!!
最近ご無沙汰ですね。相変わらずCWでAJA追っかけ中です。
>
> コンパイルのオプションのお話から察するに、VS2013(Express for Windows Desktop?)でWin32プラットフォームの開発状態であると思いますのでその前提でお話しします。
>
> 動的リンクで成功するということですので、やはり呼び出し規則だけの問題だと思います。コンパイルオプションではなく、呼び出す関数だけ…
>
> extern "C"
> { int __stdcall THW_read(TThLog *,...);
> :};
>
>
> みたいな宣言ではダメでしょうか? extern "C" は関数名のみで名前
>を解決するために必要で、__stdcallは hamlog50.h にWINAPIとして>義>してある通り、APIのコール方法を規定してます。
仮のLibを作る際にも同じ指定を行い、使用する際にも指定しないと、リンクの際にエラーが出ます。__stdcall を指定すると extern "C"を付けても名前修飾が付くんですね。__cdeclではこれを付けると名前修飾が付かない。
> .
> ..そういう私もDLLが呼び出せないときを想定し、動的リンクで呼び出してますが…。
皆さん有難うございます。
やはり、__stdcall でしたか。だけどこれを指定すると、 extern "C"を指定しても、_XXXXX@ の名前修飾が付き解決出来ませんでした。depends で見るとLink状況が確認できますので。結局動的リンクで皆さん運用しているのですね。引数のない関数 Verチェックは問題なく 動くので引数の受け渡しの問題だと思っていたのですが。皆さん動的で行っておられるならこれで行きます。それにしてもなぜこちらだといけるのかな。
動的リンクの場合 ポインターを保存しても駄目だと言う事が書いてあるので使用の際にDLL 関数のポインターを新たに取得していますが、やはり一つのサブルーチン内だけで使へと言う事ですかね。初期化で一括ポインターを取得して、あちこちで使えれば、普通のリンクと同じで使いやすいのですが。皆さんアドバイス有難うございました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Win8.1 UAC の回避方法?
: 580
: 2014/09/30(Tue) 21:49:41
: JO1SIM・出島
太田OM
UACの回避ですが、基本的には引っかかっている作法を無くすのがスジだとはおもいます。Win7でひっからず、Win8で引っかかるのにはどんな違いがあるのでしょうか?大いに興味有りです。
(認識では同じレベルだと思ってたので)
> 皆さん、こんにちは。
> 最近、Win7で作成した自作ツールをWin8.1で動かすことがあります。
> その際に監理者権限にしておいても毎回UACダイアログが表示されて
> 確認を求められます。
> セキュリティの安全の為には必要な事ですが特定プログラムは回避するには
> どうすれば良いでしょうか?
> セキュリティ・ソフト、Win8.1での設定、VB2010やVB2013での回避方法など....?
>
> 皆さんはどうされていますか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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)
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!