2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

★初心者にVisual C++を教えるスレ★ Part38

1 :デフォルトの名無しさん:2011/11/03(木) 00:54:48.61
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

【過去スレ】
Part37 http://hibari.2ch.net/test/read.cgi/tech/1299982561/
Part36 ttp://hibari.2ch.net/test/read.cgi/tech/1273939582/
Part35 ttp://pc12.2ch.net/test/read.cgi/tech/1256645713/
Part34 ttp://pc12.2ch.net/test/read.cgi/tech/1245382769/
Part33 ttp://pc12.2ch.net/test/read.cgi/tech/1235292263/

2 :デフォルトの名無しさん:2011/11/03(木) 00:57:26.21
【関連スレ】
■MFC相談室 mfc22d.dll■
http://hibari.2ch.net/test/read.cgi/tech/1316080347/
Win32API質問箱 Build97
http://hibari.2ch.net/test/read.cgi/tech/1318439361/
【C++】 DirectX初心者質問スレ Part36 【C】
http://hibari.2ch.net/test/read.cgi/tech/1319032065/
C言語なら俺に聞け(入門篇) Part 54
http://pc12.2ch.net/test/read.cgi/tech/1254829314/
C++相談室 part91
http://hibari.2ch.net/test/read.cgi/tech/1315922506/
C/C++の宿題片付けます 152代目
http://hibari.2ch.net/test/read.cgi/tech/1312201995/

3 :デフォルトの名無しさん:2011/11/03(木) 00:58:12.13
【関連サイト】
MSDN ライブラリ
http://msdn.microsoft.com/ja-jp/library/default.aspx

Windows SDK for Windows Server 2008 and .NET Framework 3.5
http://www.microsoft.com/downloads/details.aspx?FamilyID=f26b1aa4-741a-433a-9be5-fa919850bdbf&DisplayLang=en

4 :デフォルトの名無しさん:2011/11/03(木) 00:58:56.91
誰かおしえてください><
Win7の64bitマシンを使っています

Visual C++2010を使用しています。
アクティブソリューションぷらっとホームには、x64を追加することが出来たのですが
その下のプロジェクトのぷらっとホームにx64が出ません。何故ですか?
http://up3.viploader.net/ippan/src/vlippan243062.jpg

5 :デフォルトの名無しさん:2011/11/03(木) 02:31:12.00
>>4
http://hibari.2ch.net/test/read.cgi/tech/1299982561/938

にょろん?

6 :デフォルトの名無しさん:2011/11/03(木) 03:33:05.20
>>1
乙です

40代のLinux鯖屋ですが未だにVC6でたまに仕事がありますw
未だに作法がわからず、とりあえず動くものを納品してます。
よろです。

7 :デフォルトの名無しさん:2011/11/03(木) 07:30:15.00
>>5
それわたしです
SDK入れたり色々してみたんですが
やっぱりうまく行きません

8 :デフォルトの名無しさん:2011/11/03(木) 17:58:21.43
ウインドウアプリケーションを作っているんですが
基本ネットにつないであるデスクトップの32ビットVistaに入れたVC++2008EEはthis->とか入れたらドロップリストみたいなのが出て自動入力できるんですが
ノーパソの64ビット7に入れたVC++2010EEでは全く出てくれません。どうしてでしょうか?

9 :デフォルトの名無しさん:2011/11/03(木) 18:48:11.40
>>8
「#include <」とか、
「#include "」とかって書くとどうなります?
2010からヘッダファイルもインテリセンスしてくれるので動作確認できます。
ちなみに、インテリセンスさんは頻繁に気絶されるので、動かないときは再起動してあげてください。

↑で何も変化ないなら、設定切れてるかインストール失敗したのでは?

10 :デフォルトの名無しさん:2011/11/03(木) 18:54:46.30
>>9
ありがとうございます
#include <と書くとヘッダファイルのドロップリストがいっぱいでてきました
でもメンバは全く出ないのです

11 :デフォルトの名無しさん:2011/11/03(木) 18:56:42.39
Ctrl+Jでおk

12 :デフォルトの名無しさん:2011/11/03(木) 19:08:29.44
Ctrl+J?何もおこりませんが

13 :デフォルトの名無しさん:2011/11/03(木) 19:47:33.80
ソリューションを全クリーンして、自分で .pdb (だっけ?)を削除した上でリビルドしてもかわんない?

14 :デフォルトの名無しさん:2011/11/03(木) 20:50:26.09
.ncb も削除しとけよ

15 :デフォルトの名無しさん:2011/11/05(土) 08:00:18.97
MethodInvokerデリゲートをC++で使いたいのですが、C++だけサンプルがなくて使い方がよく分からないです。
ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.methodinvoker.aspx#Y0

コンパイルしようとするとかっこの対応関係でエラーが出てしまいます。
どなたかC++での書き方を教えて頂けませんか。

16 :デフォルトの名無しさん:2011/11/05(土) 11:21:49.18
そのサンプルのままやろうとしたの?
匿名メソッドって使えたんだっけ?

17 :デフォルトの名無しさん:2011/11/05(土) 12:05:03.42
はい。
サンプルのままやろうとしました。

C++/CLIはサンプルが少ないので、いつもC#を参考にして色々試しているのですが、今回はどう変えればいいのか分かりませんでした。


18 :デフォルトの名無しさん:2011/11/05(土) 13:33:37.66
C++/CLI には匿名メソッドがなかったような気が。
※ this.Invoke の行から始まるヤツのこと

でもデリゲートはあったはずだから、匿名メソッドの部分を通常?の関数?にして
やってみればいいんじゃね。それも分からないなら、デリゲートをちゃんと勉強してからだと思う。

で、あやふやな記憶で書いてる。間違ってたらごめん。

19 :デフォルトの名無しさん:2011/11/06(日) 22:05:29.05
デリゲートの概念がすぐに理解できずにちょっと躓きましたが、なんとか解決できました。
関数化は簡単でしたが、関数で引数を受けなければならない場合、Invokeの引数は(デリゲートのインスタンス,引数)となるんですね。

アドバイスを下さった方々、ありがとうございました。


20 :デフォルトの名無しさん:2011/11/06(日) 22:40:02.81
やっと立ったのね
遅いわよ>>1

21 :デフォルトの名無しさん:2011/11/07(月) 00:22:30.65
ネストがややこしいのですが細かく考えすぎないほうがいいのでしょうか?

22 :デフォルトの名無しさん:2011/11/07(月) 00:40:07.38
ネストが深くなるなら、深い部分を関数かするとかは同等手段だね。
try 〜 catch とか古くは do 〜 while(false) を使って流れの中では正常ケースしか存在しないようにするとかも。

23 :デフォルトの名無しさん:2011/11/07(月) 00:40:30.80
x同等
o常套

24 :デフォルトの名無しさん:2011/11/07(月) 01:24:06.69
すみません、ここ最近参考書を買って独学しているものです
頭では理解しているのですがいざこういう処理をするプログラムを書けって言われて書けないことが多々あるのですがまずいのでしょうか?
また対策として何かありますか?

25 :デフォルトの名無しさん:2011/11/07(月) 01:29:12.57
>>24
それが普通。
その度に調べて自分の血肉にしていくしかない。


26 :デフォルトの名無しさん:2011/11/07(月) 01:37:02.45
そうなんですか
自分語りのつもりはないのですが学生時代はアホだったものでこれも向いてないのかなと不安になりました
素早いレスありがとです

27 :デフォルトの名無しさん:2011/11/07(月) 23:18:21.83
インストール時に保存先を別のディスクに選んでもへ殆どがC:に保存されるけど後でコピーして別のディスクにいれて起動できる?

28 :デフォルトの名無しさん:2011/11/11(金) 01:06:18.33
VC ってプロジェクトの設定に OutDir のようなマクロ変数を使いますよね。
これの中身を外部のプログラムなどから覗くことは出来ないでしょうか。

プロジェクトファイルが XML で書かれているので、その中に定義があると思ってたのですが、見あたらなかったです。

29 :デフォルトの名無しさん:2011/11/14(月) 18:27:40.34
現在実行中のスレがどのような呼び出し階層でそこに居るのか調べて、std::stringに文字列を代入したいのです。
なんという関数を利用すれば解決できるかわかりません。

び出し階層、ログ、アサート、assertで検索してみましたが、節穴でみつけられていません。
ヒントをください。

30 :デフォルトの名無しさん:2011/11/14(月) 19:13:20.15
>>29
スタックトレースという
こういうのを使ってごにょごにょやるようだ
http://msdn.microsoft.com/ja-jp/library/cc428994.aspx

31 :デフォルトの名無しさん:2011/11/14(月) 23:56:35.07
質問です。
メモリリークの検出方法を調べていたんですが。

@最初に_CrtSetDbgFlagを記述する方法と
// メイン関数
int main(int argc, char* argv[])
{
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
  :
}

A最後に_CrtDumpMemoryLeaksを呼び出す方法があるようなのですが
int main(int argc, char* argv[])
{
  :
_CrtDumpMemoryLeaks();
}

@だとメモリリークが検出されずAだと数箇所のメモリリークが検出されてしまいます。
どちらが信用できるのでしょうか?ソースを追ってみたところ
メモリリークが発生しそうな箇所はありませんでした。

32 :デフォルトの名無しさん:2011/11/15(火) 08:09:01.13
>>31
mainのスコープのデストラクタは_CrtDumpMemoryLeaks();を呼んだ時点で
まだ呼ばれてはいないぞ。ヒープの解放予定のあるオブジェクトがあったら
当然誤検知
だからどちらも信用できる
ただ@のほうが自動で全部終わったあとに調べるから使い勝手はいいと思われ

33 :デフォルトの名無しさん:2011/11/16(水) 12:45:25.00
xmlのフォーマットで書かれたテキストファイルを読み込みたいのですが、
そもそも、ファイルの内容がXMLとしておかしくないかチェックしてくれる便利なライブラリを紹介いただけないでしょうか?
<root>
 <piyo>ababababa<hoge></piyo>
 Hello World</hoge>
</root>
の場合は、<piyo>に値があるのに、閉じられる前に次のタグが始まっているからパースエラー、というようなチェックをして欲しいのです。
よろしくお願いします。

34 :33:2011/11/16(水) 13:07:54.11
33です。
rapid_xml(もしくは、boost::property_tree)でxmlのパースができることを見つけたのですが、閉じタグをチェックしてくれないので少し困っています。
ここまでのチェックは、他のライブラリも含めて、してくれないものなのでしょうか?

<root>
 <aa>えー</cc>
 <bb>びー</bb>
</root>
この例の場合、<aa>の閉じタグが何故か</cc>になっているのでパースエラーになってほしいのですが、rapid_xmlだと問題なしにされてしまいます。
欲を出すと、boostライセンスのように取扱が簡単なものがよいのですが…。
MSXMLも試してみます。(…MSのは、どうしてこんなに複雑なのだろう…。)

35 :33:2011/11/16(水) 13:10:16.30
33です。スレッド間違えました。
【初心者歓迎】C/C++室 Ver.76【環境依存OK
↑のスレッドのつもりで書き込んでいました。申し訳ないです。あちらへ移動します。

36 :デフォルトの名無しさん:2011/11/16(水) 16:12:15.70
ビルド結果の文字列の並びを変更することって可能でしょうか?

========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========

========== ビルド: 正常終了 1、失敗 0、更新不要 0、スキップ 0 ==========

37 :デフォルトの名無しさん:2011/11/16(水) 16:17:52.35
不可能

38 :デフォルトの名無しさん:2011/11/16(水) 16:54:55.76
>>36
msenvui.dllの中に入っている文字列リソースのようなので、
それを自己責任で書き換えてしまえばできるかもしれないけど。

39 :デフォルトの名無しさん:2011/11/16(水) 19:38:05.16
(`●ω●´)  < ふ か の う〜

と某スレでは書きます。

40 :デフォルトの名無しさん:2011/11/16(水) 22:49:02.71
したいこと: スタートアップフォルダにソフトを置いて、PC起動時にRAMディスクドライブに
"z:\test\"という共有フォルダを作成したい。

#include "stdafx.h"
#include <direct.h>
int _tmain(int argc, _TCHAR* argv[])
{
_mkdir("z:\test\");
return 0;
}

あとは共有設定したいのですが続きをお願いします。

41 :デフォルトの名無しさん:2011/11/16(水) 22:58:37.71
ttp://eternalwindows.jp/security/share/share02.html

42 :デフォルトの名無しさん:2011/11/17(木) 04:52:33.57
mkdir
net share ...
のバッチで十分な気がしないでもない

43 :デフォルトの名無しさん:2011/11/17(木) 10:09:42.41
プロジェクトのプロパティの
構成プロパティ>リンカー>入力>追加の依存ファイル
とは、何を入力する欄なのですか?

visual c++ 2010 Express を利用してプログラムの学習をしていて、
boost c++ libraryをインストールした際は、
Program Files\Microsoft SDKs\Windows\v7.0A
にヘッダとライブラリをコピーするだけで利用できたのに対して、
libxml2をインストールした際は、上記に加えて、
構成プロパティ>リンカー>入力>追加の依存ファイル
に対して、libxml2.lib を追記しないとリンクに失敗して、LNK2001・LNK2019が発生していたことが質問の背景にあります。

以前、何かのまねをしてプロジェクトを作っていたときに、
追加の依存ファイルに、ws_32.lib だったかを追記するようにという記述を思い出したので、
試してみたら、リンクエラーが無くなって解決できました。
そして、逆に、どうして必要・不要なのか気になってきました。

よろしくお願いします。

44 :デフォルトの名無しさん:2011/11/17(木) 10:36:02.61
>>43
ライブラリは明示的にリンクしろと書かないかぎりリンクされない
追加の依存ファイルはリンクするライブラリを指定する場所
boostはヘッダに
#pragma comment(lib, "〜.lib")
と書いてリンカに自分のライブラリを指定しているから追加の依存ファイルに書かなくてもリンクが通る

45 :デフォルトの名無しさん:2011/11/17(木) 19:13:06.02
テンプレートクラスが気持ち悪い

46 :43:2011/11/17(木) 21:30:26.01
>>44
ありがとうございます。
ところで、どこでそんなことを知るのですか?

47 :デフォルトの名無しさん:2011/11/19(土) 14:06:07.11
現在VC2008で汎用のテンプレートクラスを作成していて
エラー出力の方法を模索しています
コンソールアプリならコンソールに
GUIアプリならアラートという風に出力先を静的に切り変えたいのですが
そのためのdefine定義がVCに既定であったりするのでしょうか?

48 :デフォルトの名無しさん:2011/11/19(土) 14:20:39.40
_CONSOLE
ちょっとプロジェクト作ってプリプロセッサの定義を見れば書いてあるぞ。

でもそんなんで切り替えるんじゃなくて、例外かなにかをそのクラスを使う側で捕捉できるようにして、
捕捉した側で出力を行うようにした方が設計的に良くないか?

49 :デフォルトの名無しさん:2011/11/19(土) 14:50:36.64
今作成しているエラー処理がリリース時には必要のないもので
外部にまでひっぱりだすのが面倒臭いのでクラス内に直接書くつもりです。
本来のエラー処理の関してはおっしゃる通りだと思います。

50 :デフォルトの名無しさん:2011/11/20(日) 07:34:01.71
privateのインスタンスメソッドのユニット試験がとても面倒です。
というか、やり方がわかりません。
教えて欲しいです。

C言語であれば、全ての関数はグローバル的な感じなので、適当なファイルにmain()を作って、そこから呼び出すだけだったのですが…。
自宅で趣味でプログラムをしているだけなので、殆ど試験をしていません。
が、何か寂しいです。

何かよい方法があれば教えてください。よろしくお願いします。

51 :デフォルトの名無しさん:2011/11/20(日) 11:23:37.44
#ifdef [ユニット試験識別用のマクロ]
#define private public
#endif

とか。

52 :デフォルトの名無しさん:2011/11/20(日) 11:36:14.21
インテリセンスorz

53 :デフォルトの名無しさん:2011/11/20(日) 14:27:27.61
PDB,LIBファイルとはどういうファイルなんですか
プロパティページの追加のライブラリィディレクトリの項目にそれらが入っている場所
が指定されていたんですが それらを開けなくて困ってます


54 :デフォルトの名無しさん:2011/11/20(日) 17:07:14.00
【開発環境】
Visual studio 2008 pro 
Windowsフォームアプリケーション

【やりたいこと】
ソフト起動時から、ボタンを押した時点までの時間を表示するプログラムを作りたい

【ソース】
#include <windows.h>
#include <mmsystem.h>
#pragma comment (lib, "winmm.lib")
#include <time.h>

     (中略)

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
DWORD start;
start = timeGetTime();
}

private: System::Void button13_Click(System::Object^ sender, System::EventArgs^ e) {
DWORD end;
end = timeGetTime();
MessageBox::Show(String::Format("{0}msです。",end - start));

【出力】
'start' : 定義されていない識別子です。

Loadで宣言した関数が定義されてないと言われるのを解消したいんですけどどうすればいいですか?

55 :デフォルトの名無しさん:2011/11/20(日) 17:19:45.68
startをグローバル変数にしろ

56 :デフォルトの名無しさん:2011/11/20(日) 17:26:37.28
>>55
できました!ありがとうございます。

57 :デフォルトの名無しさん:2011/11/20(日) 19:25:22.58
開発環境:VS2008
種類:DLL

ref classに配列を定義する場合、
staticとして定義したものと同様に扱えて(以前の内容を保持して)、
かつ、各インスタンスからは独立するようにするのはどうしたらいいのでしょうか?



58 :デフォルトの名無しさん:2011/11/20(日) 20:02:53.88
つい先日2010Expressを導入しました。
ベターCとして使っています。

一度作った構造体にメンバを追加したのですが、デバッガでステップを
追うと、どうもメンバが更新前の古いままのようです。
キャッシュが効いているという事でしょうか?
そのキャッシュは、どこで手動更新出来るのでしょうか?


59 :デフォルトの名無しさん:2011/11/20(日) 20:20:59.14
>>53
そんなもん、自分で調べろよ。いや、本当に。
http://www.google.co.jp/#sclient=psy-ab&hl=ja&source=hp&q=vc+.pdb&pbx=1&oq=vc+.pdb&aq=f&aqi=g-C2&aql=&gs_sm=e&gs_upl=11418l11721l1l12597l3l3l0l0l0l2l174l497l0.3l3l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=775e48388cd17464&biw=1642&bih=812
http://www.google.co.jp/#sclient=psy-ab&hl=ja&source=hp&q=vc+.lib&pbx=1&oq=vc+.lib&aq=f&aqi=g1g-C3&aql=&gs_sm=e&gs_upl=13554l14989l2l15321l6l6l0l0l0l0l207l795l2.3.1l6l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=775e48388cd17464&biw=1642&bih=812

>>57
それが何やるクラスなのかわかんないからアレだけど、
その配列を保持するのを独立させてシングルトンにしてみたら?
で、各クラスはそれを参照するようにするとか。

>>58
一度、クリーンするとか debug/release フォルダを削除してからしてリビルドしてみてもそうなる?
たぶん古い情報が .pdb かなにかに残ってるんじゃね。

60 :デフォルトの名無しさん:2011/11/20(日) 20:59:47.32
>>57
public:
static array<T>^ arr = gcnew array<T>(N){...};

61 :58:2011/11/20(日) 21:52:29.05
>>59
クリーンすると言うのはどういう事でしょうか?
ディレクトリ削除、これは私にもすぐ理解出来たので、同じ問題が
出たらやってみようと思います。

で私は、問題の出た周辺に意味のない代入式を色々置いたり
メンバの変数名を変えたりして、無理やりねじ伏せました。
お答え有り難うございました。
#と言うか、よく起きる事なのでしょうか。


62 :デフォルトの名無しさん:2011/11/20(日) 22:28:14.26
>>61
>クリーン

オブジェクトファイル等の中間生成物や、exeファイル等を
削除する。
手作業ではなくて、ビルドメニューにそういうのがある。

63 :58:2011/11/21(月) 23:42:06.24
>>62
ビルドと言うメニュー自体ないのですが・・・と思ったら、
上級者設定にしたら出現しました。
なるほど。
しかし、今度はデバッグ中に構造体のメンバの値が
表示されなくなりました。先頭アドレスのみ表示されて。

慌てて基本設定に戻しましたが復元せず。
どこをいじれば良いのでしょうか。


64 :デフォルトの名無しさん:2011/11/22(火) 00:47:04.44
どーしてもなおんなかったら、再現する最小構成をどっかに晒せや。

65 :デフォルトの名無しさん:2011/11/26(土) 11:18:25.95
age

66 :デフォルトの名無しさん:2011/11/29(火) 00:00:20.94
完全初心者なのにヘッドマウントディスプレイを使って3D空間を見渡せるプログラムを作ってみたいと思い、
先日勢いでVR920というセンサー付きのヘッドマウントディスプレイを購入しました。
公式サイトhttp://www.vuzix.com/_jp/support_downloads_drivers.html
からSDKをDLしてHelloTracker3というサンプルを参考に頭の向きや角度の数値を取得する最低限のコードを模索しようとしていた所
そもそも公式のHelloTracker3がコンパイル出来ず

1>cl : コマンド ライン warning D9035 : オプション 'Wp64' の使用は現在推奨されていません。今後のバージョンからは削除されます。
1>stdafx.cpp
1>c:\program files\vuzix corporation\vuzixsdk\examples\hellotracker3\stdafx.h(34) : fatal error C1083: include ファイルを開けません。'afxwin.h': No such file or directory
1>ビルドログは "file://c:\Program Files\Vuzix Corporation\VuzixSDK\examples\HelloTracker3\Debug\BuildLog.htm" に保存されました。
1>HelloTracker3 - エラー 1、警告 1
========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========

というエラーが表示され完全に出鼻をくじかれてしまいました。
調べてみた結果MFCというものを利用しているのでExpress2008では開発出来なさそうという事実に行き着いてしまったのですが
やはり上記のようなセンサーからの数値取得はExpress2008では無理でしょうか?


67 :デフォルトの名無しさん:2011/11/29(火) 00:04:30.98
GUIの部分に使ってるだけだろうから
無くてもいけるだろうけど
visualStudioのprofessional買った方が早い気がするな

68 :デフォルトの名無しさん:2011/11/29(火) 00:19:11.44
>>67
早速の返信ありがとうございます!
やはり購入したほうがスムーズなんですね・・・
下調べが足りずに買ってしまった自分がバカだったんですけどこれ以上は資金的な余裕が・・・
MFCとやらがGUIだけに使われていてセンサーからの数値取得自体には必要とされていなければ気合でなんとかなりますでしょうか

69 :デフォルトの名無しさん:2011/11/29(火) 00:25:36.33
ここにソース貼るかリンクすれば
ネトウヨさんがMFCなしで動くように治してくれるよ

70 :デフォルトの名無しさん:2011/11/29(火) 00:49:07.31
>>69 
申し訳ありません・・・自力では目的達成が可能なのか不可能なのかもわからないレベルでお恥ずかしい限りです。
サンプルプログラムのフォルダをzip形式にしてUPしてみました。

http://www.dotup.org/uploda/www.dotup.org2320354.zip.html

71 :デフォルトの名無しさん:2011/11/29(火) 00:49:37.47
SDKとにらめっこすればいけるんじゃね

72 :デフォルトの名無しさん:2011/11/29(火) 01:07:56.34
>>71
ほんのちょっとかじった程度でいきなりこの挑戦は思い上がりすぎだったかもしれないと反省している所ですorz
一応見渡すための3D空間とカメラ等はDXライブラリのサンプルを参考に作ってあるので、
頭の角度の数値さえ取得できればあとはなんとか自力で・・・という所です。
あきらめず自分なりにもにらめっこ挑戦してみます。

73 :デフォルトの名無しさん:2011/11/29(火) 01:53:23.01
環境:VC++2010
int* ptr = nullptr;
ってメインスレッドでして、サブスレッド内で
ptr = new int[10];
としてすぐにサブスレッドは終了。確実に終了したことを確認した上で
メインスレッドで
delete[] ptr;
とやりました。
で、#include <crtdbg.h> を使ったところ、ptrは解放されてない、
とメモリリークが検出されました。
スレッドをまたぐメモリ確保はやっちゃだめでしょうか?
それとも単にcrtdbgが解放を検出できてないだけでしょうか?

74 :73:2011/11/29(火) 02:02:34.01
スマポ使ったらメモリリーク無し、と出たので間違いなく自分のコードが
どこかおかしいことがわかりました。ということで無視してください。

75 :デフォルトの名無しさん:2011/11/29(火) 02:09:37.73
#include <crtdbg.h>
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#define new ::new( _NORMAL_BLOCK, __FILE__, __LINE__ )
#endif // _DEBUG
#include <Windows.h>
#include <process.h>
unsigned int WINAPI thread(void *p) {
int* &pp = *(int**)p;
pp = new int [ 100];
_endthreadex(0);
return 0;
}
int main()
{
int *p;
HANDLE hThread;
hThread = (HANDLE)_beginthreadex(NULL, 0, thread, (void*)&p, 0, NULL);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
delete [] p;
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
return 0;
}

リークしないなぁ

76 :デフォルトの名無しさん:2011/11/30(水) 13:27:13.73
>>74

77 :デフォルトの名無しさん:2011/12/01(木) 11:07:39.23
>>76

78 :デフォルトの名無しさん:2011/12/01(木) 11:19:27.31
>>77

79 :デフォルトの名無しさん:2011/12/01(木) 20:19:51.53
ぬるぽ

80 :デフォルトの名無しさん:2011/12/01(木) 20:22:44.22
がっ

81 :デフォルトの名無しさん:2011/12/04(日) 03:41:10.78
環境
Windows Vista SP2 32bit
Visual C++ 2010 Express

こちらにあるようにWinHttpRequestを使用したいと思いました。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa384045(v=vs.85).aspx


デバッグしようとしたところ下記のエラーが出て対応をしました。

 ・error C2872: 'IServiceProvider' : あいまいなシンボルです。
   "using namespace System;" と "#include <windows.h>"
   を同じ名前空間に記述することが問題だとなってましたので
   "using namespace System;"をコメントアウト

 ・error C2653: 'WinHttp' : 識別子がクラス名でも名前空間名でもありません。
   #import "winhttp.dll" named_guids
   と記述してGUID型のCLSIDやIIDの定義が生成しなくてはならないとありましたので
   記載

コードは次レスです。


82 :デフォルトの名無しさん:2011/12/04(日) 03:42:14.63
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <objbase.h>
#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "oleaut32.lib")
#import "winhttp.dll" named_guids
//using namespace System;
// IID for IWinHttpRequest.
const IID IID_IWinHttpRequest = {
0x06f29373,
0x5c5a,
0x4b54,
{0xb0, 0x25, 0x6e, 0xf1, 0xbf, 0x8a, 0xbf, 0x0e}
};

int main(array<System::String ^> ^args){
HRESULT hr;
hr = CoInitialize(NULL);

WinHttp::IWinHttpRequest * pIWinHttpRequest = NULL;
CLSID clsid;
hr = CLSIDFromProgID(L"WinHttp.WinHttpRequest.5.1", &clsid);

if (SUCCEEDED(hr)){
hr = CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,IID_IWinHttpRequest,(void **)&pIWinHttpRequest);
}
CoUninitialize();
return 0;
}


83 :デフォルトの名無しさん:2011/12/04(日) 03:46:24.60
>>80で忘れていましたが、
プロジェクト作成時のテンプレートは
「CLRコンソールアプリケーション」です。

CoCreateInstance呼び出しで
HRESULTのhrが【0x80004002】になってしまいます。
インターフェースがわからない??
お願いします。助けて下さい。


84 :デフォルトの名無しさん:2011/12/04(日) 07:25:18.00
COMじゃない方使えよ

85 :デフォルトの名無しさん:2011/12/04(日) 08:57:24.97
馬鹿には無理

86 :81:2011/12/04(日) 17:53:04.67
お願いします。age

87 :デフォルトの名無しさん:2011/12/04(日) 18:22:41.92
ほぼ同じ環境で上のコードをコピペしてやってみたが、ふつーに通ったぞ。
なにか必要なライブラリかなにかが入ってないんじゃねーの?

88 :デフォルトの名無しさん:2011/12/05(月) 18:30:36.09
>>87
ありがとう。そして少し聞きたい。プログラムで取得できたCLSIDとレジストリに設定されているProgID、WinHttp5.1の数値が違うのだが、
あなたは一緒でしょうか?

自分はプログラムで取得したCLSIDは「00389130-0000-0000-54EF-1C00F036C15D」でした。

hr = CLSIDFromProgID(L"WinHttp.WinHttpRequest.5.1", &clsid);

- clsid {00389130-0000-0000-54EF-1C00F036C15D} _GUID

以下レジストリをWinHTTP.dllで検索しました

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}]
@="WinHttpRequest Component version 5.1"

[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}\InProcServer32]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,77,00,69,00,\
6e,00,68,00,74,00,74,00,70,00,2e,00,64,00,6c,00,6c,00,00,00
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}\ProgID]
@="WinHttp.WinHttpRequest.5.1" ←◆ここです!!

[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}\TypeLib]
@="{662901fc-6951-4854-9eb2-d9a2570f2b2e}"

[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}\Version]
@="5.1"


89 :82:2011/12/05(月) 18:31:17.70
ちなみに最近WindowsUpdateに失敗します。

90 :デフォルトの名無しさん:2011/12/05(月) 21:00:00.12
C#を1年くらいしかやったことないんだけど、
今からC++のWin32を勉強始めても何か役に立ちますかね?
C#ってやっぱり重いし、デザインもモッサリしてるし、
ネイティブなC++のほうが難しそうだけど良いのかな?と思いました。
でも時代は64bitだし、VS2010EEでできるのはWin32ですよね。

91 :デフォルトの名無しさん:2011/12/05(月) 22:15:47.24
IDEにEE使ってもx64バイナリを吐かせることはできる

92 :デフォルトの名無しさん:2011/12/05(月) 22:33:44.33
>>88
プログラムでの CLSID の取り方なんて忘れたよ。w
コードの clsid の中身を並べてみたけど、これで良かったんだっけか?

[プログラムコードから取得したID]
2087c2f4-2cef-4953-a8ab-66779b670495

[レジストリの値]
[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}\ProgID]
ProgID = WinHttp.WinHttpRequest.5.1
TypeLib = {662901fc-6951-4854-9eb2-d9a2570f2b2e}
Version = 5.1

‥‥ ::CLSIDFromProgID() で取得した値はレジストリの CLSID の下のノードの名前?みたいだな。おまえのも一緒だし。

93 :デフォルトの名無しさん:2011/12/05(月) 22:35:37.67
>>90
C++ を自在に操れるレベルになれば、他の言語なんか怖くない。
でも大抵は C# で事足りる。十分すぎるくらい。しかも凄く簡単、ってか楽。
どこまでやるかによる。

94 :デフォルトの名無しさん:2011/12/05(月) 22:55:27.47
>>92
いえ、
私は00389130-0000-0000-54EF-1C00F036C15Dです。

今.netframework4アンイントールができなくて困ってます(T_T)

これやったり
regsvr32 Softpub.dll /s
regsvr32 Wintrust.dll /s
regsvr32 Initpki.dll /s
regsvr32 Mssip32.dll /s

HotFixかけたり

修復したり

復元したり

(T_T)なみだ(T_T)なみだ

95 :デフォルトの名無しさん:2011/12/05(月) 23:03:08.60
まあなんだ。頑張れ。w
逆にインストールしたら欠けてた部分が補完されて正常に、なんて都合のいいことはないか。

96 :デフォルトの名無しさん:2011/12/05(月) 23:04:22.92
0x800B010B こいつなんとかし netFx_core.mzz のセキュリティ検証で落ちるぞ

97 :デフォルトの名無しさん:2011/12/06(火) 00:40:04.02
これさー これやん

IID_IWinHttpRequest

98 :82:2011/12/06(火) 00:44:55.21
事故解決しました

感謝
http://www.sol.dti.ne.jp/~yoshinor/ni/ni0002.html
http://moz-addon.g.hatena.ne.jp/ZIGOROu/20071015/1192454217
http://www.vector.co.jp/soft/dl/win95/prog/se359660.html

趣味プログラミングは敷居が高いですね><

99 :デフォルトの名無しさん:2011/12/06(火) 12:04:47.40
>>93
レスありがとうございます。
やはり細かなところまで要求するとC++なんですよね。
でも大概はC#で事足りる。プログラミング歴1年の僕にでも「とりあえず」出来てしまいましたから。
C++も新規格が出たようですし、今から勉強始めても損は無さそうですね。

100 :デフォルトの名無しさん:2011/12/06(火) 18:41:14.84
>>98
tlhファイルを見なさい!!

101 :デフォルトの名無しさん:2011/12/06(火) 20:33:24.31
#importで定義を吐き出すとなんでヘッダーファイルと定義が違うの?

102 :デフォルトの名無しさん:2011/12/07(水) 00:31:57.55
OBJ obj[15];
OBJ obj1[5];
OBJ obj2[5];
OBJ obj3[5];

とあって、objの中にobj1〜obj3を順に格納したいんですが、
ポインタを使うとどう書くんですか?
ポインタがいまいち分かってません。

103 :デフォルトの名無しさん:2011/12/07(水) 00:39:57.99
OBJ* obj[15];
obj[ 0 ] = &obj1[ 0 ];
(以下略)

じゃないの?

104 :片山博文MZ ◆0lBZNi.Q7evd :2011/12/08(木) 13:16:19.78
>>102
#define BAKA for(int i = 0; i < 5; i++) obj[i] = *p++;
OBJ *p;
p = obj1; BAKA
p = obj2; BAKA
p = obj3; BAKA

105 :デフォルトの名無しさん:2011/12/09(金) 12:31:39.86
dllを使うプログラムをつくったのですけど、
そのdllが無くても起動してしまって、困りました。

変なパスが通っているのかと思って、環境変数の「Path」を眺めていたら、怪しいのをみつけました。
で、それを削除して実行したところ、dllがないと言われました。
あるアプリをインストールしたら、たまたま同じdllがインストールされて、それを使って動いていました。

自分で用意したdllを強制的に使うようにしたいのですけど、どうすればいいのでしょうか?
出来れば実行ファイルのサブフォルダに格納して、それを参照させたいです。出来なければ諦めます。

106 :デフォルトの名無しさん:2011/12/09(金) 12:48:41.08
LoadLibrary とバージョンチェックしかないんじゃない

107 :デフォルトの名無しさん:2011/12/09(金) 16:08:16.55
自分が用意したDLLならEXEと同じフォルダに置くのが一番だと思う

108 :デフォルトの名無しさん:2011/12/09(金) 22:37:06.31
ファイル名とか関数名をあんまり使わないようなものにしちゃうとか。

109 :デフォルトの名無しさん:2011/12/12(月) 22:30:49.92
>>107 でFA?
必ずexeの場所のdllが最初に検索される?

35 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)