[過去ログ] 【初心者歓迎】C/C++室 Ver.106【環境依存OK】 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
633
(1): 2021/04/24(土)09:53 ID:K4uxnQki(1/2) AAS
LNK2020ってそれnativeのC++からリンクしようとしてる?
634: 2021/04/24(土)14:56 ID:LUJ0Utr0(3/4) AAS
>>633
libなのでクライアントはC++です
635
(1): 2021/04/24(土)15:16 ID:K4uxnQki(2/2) AAS
そりゃ無理。その仲立ちをするためにC++/CLIがあるのに。
一応nativeのC++からでも自分でCLRを立ち上げたりしてマネージドクラスにアクセスする方法は
あるらしいが、リンクしてそのまま呼ぶという形にはならない。
636
(12): 2021/04/24(土)15:41 ID:at4cvaWV(1/2) AAS
自作のプログラム、起動時の読み込み処理の前に以下を入れると
for(int i = 0; i < 100; ++i){
OutputDebugString("dummy!!!!\n");
}
起動時に行っている外部データの読み込みが凄く速くて
これを無くすと凄く遅くなるんですが怖い…
3分くらい違いが出るので明らかにおかしい
どっかでメモリでもぶっ壊れてますかね?
どういう理由が考えられるでしょうか?
637
(1): 636 2021/04/24(土)15:43 ID:at4cvaWV(2/2) AAS
さっきのダミーを入れなくても
普通にコードを追加したりしてても遅くなったり速くなったりする
別に読み込み処理の部分とは関係ないところでも。
なんでだろう?
638
(1): 2021/04/24(土)15:54 ID:hc4SaSPr(1) AAS
>>637
それは、本当に native の C++?
もしかして、C#のC++/CLI とか?
639
(1): 2021/04/24(土)16:03 ID:lkpB631F(1) AAS
コンパイラはほんと何してるのか分からんから、問題の部分だけ切り出したのを.sへ吐かせて読みなさい
10行程度のcコードなら、edxとか変な名前のは取り敢えず変数だなって思って追えば、アセンブリ知らずとも大体分かるよ
640
(1): 2021/04/24(土)20:39 ID:LUJ0Utr0(4/4) AAS
>>635
いや、
C++ライブラリ内にマネージクラスを作って
マネージのC++プロジェクトから
呼び出したいだけ
DLLだったら、C#のDLLからマネージクラスを呼び出すのと
理屈上同じだからできそうな気がするのだけれど

以前実装した時はInterfaceだけ公開して
呼び出されるとそのインスタンスを返す、みたいなことをしたんだけれど
641
(1): 2021/04/24(土)21:31 ID:+v1plSJo(1) AAS
>>640
.NETはstatic libraryをサポートしていない
出来上がった.libにはそのマネージドクラスのメタデータとか入ってないんじゃない?
642
(1): 2021/04/25(日)00:05 ID:Oojm0ZzH(1) AAS
>>641
結局そういうことだよね
なんか普通にlibのクラスを呼び出せますみたいなのをサンプル付きで出してた記事があってさ…。

まあstaticメソッドしかないクラスばかりだから、アンマネージクラスで公開するか、namespaceでまとめます。
ありがとうございました。
643
(2): 636 2021/04/25(日)00:07 ID:sRfn5IZk(1/11) AAS
>>638
C++とWin32APIのプログラムです
>>639
これは自分へのレスですか?

特に遅くなる以外は止まったりする事もないので
困ることはないですがなんか気持ち悪い…
644: 2021/04/25(日)03:40 ID:vJWG11Gh(1/7) AAS
>>643
外部データの読み込みは、fopen, _open, CreateFile、CFile のどの系統を使
ってる?
645
(2): 2021/04/25(日)03:43 ID:vJWG11Gh(2/7) AAS
>>643
関係ないかもしれないが、HDDが寿命で故障寸前の時にHDDの読み込みが
時々極端に遅くなったりする現象を経験したことがある。
その場合は、そのプログラム以外でも同様の現象が起きるが。
646
(1): 2021/04/25(日)03:49 ID:vJWG11Gh(3/7) AAS
>>645
もし、他のアプリやファイルマネージャーも遅くなることがあるなら、
CrystalDiskInfoなどで診断してみて欲しい。
そのアプリだけ遅くなるが、アプリの動作は正常、というなら、
メモリーやスレッドやOSリソースの使いすぎなども考えられなくは無いが。
何か極端に変わったことしてたりしない?
647
(1): 2021/04/25(日)09:07 ID:x26Nnfhp(1) AAS
OutPutDegugなんちゃらの関数がファイル出力してるなら、単純にそのドライブのアクセス準備が整ってないとか。

以前、SSDに同じファイル名で一時ファイルの作成と削除を繰り返したら、SSDの仕組み上めっちゃ遅くなったことがある。
648: 2021/04/25(日)09:59 ID:j6IXZwA/(1/2) AAS
>>642
どこの記事?
ちょっと気になった
649: 636 2021/04/25(日)10:38 ID:sRfn5IZk(2/11) AAS
>>645-647
遅くなる原因の個所が分かった!
画像を読み込む時にメモリを操作して
16bitで読み込む部分があるんだけど
これを32bitで読み込むようにすると
どんなコードでもまったく遅くならない。
メモリの操作の部分がおかしかったみたい。
自分で書いたコードじゃないのでよくわからない。
32bitのやつと16bitのやつを載せるのでおかしい所あったら教えて。
650
(6): 636 2021/04/25(日)10:39 ID:sRfn5IZk(3/11) AAS
これは遅くならないコード
int X = 0;
for(int y = ImageHeight - 1; y >= 0; --y){
X = 0;
for(int x = 0; x < ImageWidth; ++x){
pPx[X] = ((DWORD*)pSrcBuf)[x + (y * ImageWidth)];
++X;
}
pPx += Pitch;
}
651
(5): 636 2021/04/25(日)10:42 ID:sRfn5IZk(4/11) AAS
これが遅くなる場合があるコード
WORD px, tmp;
BYTE b;
int X = 0;
for(int y = ImageHeight - 1; y >= 0; --y){
X = 0;
for(int x = 0; x < ImageWidth; ++x){
px = 0x00000000;
pPx[X] = px;

b = (BYTE)((((DWORD*)pSrcBuf)[x + (y * ImageWidth)] & 0xff000000) >> 24); //A
省16
652
(1): 636 2021/04/25(日)10:46 ID:sRfn5IZk(5/11) AAS
pPxは、32bitの時はDWORD*で、16bitの時はWORD*になってた。
全て載せると長くなるので変更すると速度が変わる部分だけ載せたよ。
16bitの方でも>>636のダミーを入れれば遅くならないんだよね。
やっぱメモリが壊れてるのかな?
1-
あと 350 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.028s