09/12/29 14:52:41
環境:VisualStudio2008
言語:C++(使ってるlibの内部はCかも)
CのFILE*って、スレッドをまたぐと無効になったりするのでしょうか?
ネットで拾ったlibをプログラムに組み込んでみたところ、
そのlibの中でfopenしたファイルポインタはきちんと使えてるのですが、
libの外でfopenしたポインタを渡すように少しlibのソースを改造すると
途中で例外が出てプログラムが止まるようになります。
自分で調べた限りでは、(おそらくlibの中で呼んでる)fseek関数の中で _lock_str(FILE*) したときに
「ファイルのロックを行うifブロックに流れている」のですが、
外からファイルポインタを渡すとそのifブロックを外れてelseで EnterCriticalSection という関数に流れてしまい
それが例外を吐いているようです。
libがfopenする前にスレッドを分けている感じなので、
ひょっとしたらマルチスレッドが原因なのかな?と思っているのですが、そんなもんなんでしょうか
192:デフォルトの名無しさん
09/12/29 14:54:25
/MTと/MDの差?
エラーをNODEFAULTLIBとかで無理やり抑えたとか
193:デフォルトの名無しさん
10/01/07 21:51:43
>>191
無効にはならないことが問題になるのでスレッドをまたいだらNG
194:デフォルトの名無しさん
10/06/23 18:16:08
h
195:デフォルトの名無しさん
10/06/25 20:56:13
エスパーが質問するスレでございます
196:デフォルトの名無しさん
10/06/26 01:15:22
Sパー(Superパー)が質問するスレでございます
197:デフォルトの名無しさん
10/06/29 08:16:28
24時間以内に質問は来ないな。
198:デフォルトの名無しさん
10/06/29 17:30:01
俺は何がしたいんだろう。
199:デフォルトの名無しさん
10/06/29 18:11:46
質問来ましたね、9時間ちょっとで
200:197
10/06/30 14:52:41
>>199
198はエスパー
201:デフォルトの名無しさん
10/07/14 09:28:47
なぜ