【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2016/11/06(日) 22:58:02.60ID:dU5z27As
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)

前スレ
【初心者歓迎】C/C++室 Ver.99【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1469177649/
241デフォルトの名無しさん
垢版 |
2017/01/20(金) 05:11:02.70ID:vaOLIJJw
クラス定義で定義されたメンバ関数は暗黙にinlineになるね。
(『プログラミング言語C++第4版』p.464 16.2.8 クラス内関数定義)

class SomeClass {
public:
  int a() {return a_;} // 暗黙のinline指定
private:
  int a_;
}


…という話を書くために厚い本を調べてたら

class SomeClass {
public:
  int a();
private:
  int a_;
}

inline int SomeClass::a() // 明示的にinline指定
{
  return a_;
}

と書く方法も載ってた。 >>240 は後者の説明だったのね。
2017/01/20(金) 07:10:06.09ID:Nvso2zBq
>>235
本体側に書くのが原則 特にシステムが大きくなる場合
よほどの理由がある場合(インライン化して高速化するなど)はヘッダに書くこともある
2017/01/20(金) 08:09:40.71ID:B05iL6IP
『〜のが原則』
『理由がある場合〜こともある』
俺の会社のルールは世界普遍的 思考
2017/01/20(金) 16:53:52.68ID:abKD9bRi
inlineにするのはほとんどその時の気分みたいな?
なんかマクロみたいだな。inlineにすっかみたいな。
2017/01/20(金) 17:10:04.08ID:XdmbS/hB
>>244
関数呼び出しのオーバーヘッドの回避と、定数畳み込みなどの最適化が期待できる場合にインライン化する。
2017/01/20(金) 17:38:00.40ID:abKD9bRi
>>245
そんな感じ
2017/01/20(金) 20:04:23.44ID:1c/0Zcpc
>>245
インラインにしても劇的に速くなった経験が無いんですが、コツは有りますか?
2017/01/20(金) 20:57:25.59ID:pNkrp0ep
効果が出るのは
・小さい
かつ
・短時間に非常に多数呼び出される
関数だけだよ。
しかも、まず劇的ではない。
249デフォルトの名無しさん
垢版 |
2017/01/20(金) 21:15:10.32ID:esT1VQmf
inlineキーワードはヘッダに実装書くときなどに使用するものでインライン展開を狙った最適化の為に書くものではない
2017/01/20(金) 21:15:23.08ID:abKD9bRi
もしかしてコンパイラの方で展開してるとか はないかなぁw
2017/01/20(金) 21:57:28.38ID:aetIobRP
>>249
インライン関数の話の途中でinlineキーワードの関数の話を始めて、いきなりどうした
2017/01/20(金) 22:07:56.98ID:CICAdfuU
>>249
上にもあるけどヘッダに実装書いたら暗黙でインライン指定されるから、そこにinlineキーワードを使用するのは無意味
やはりinlineは最適化のためでしょう
2017/01/20(金) 23:11:34.78ID:LsENUQp+
ベクトルとか行列のライブラリを使った時は全部インラインにしたな
1/60秒にかなりの回数呼ぶし
ライブラリとかもインラインで書かれてる
2017/01/20(金) 23:12:36.14ID:LsENUQp+
×使った ??作った
255デフォルトの名無しさん
垢版 |
2017/01/20(金) 23:27:28.97ID:esT1VQmf
>>252
んなわけない
2017/01/20(金) 23:34:20.48ID:ITfb1kXg
>>255
んなこたーない
257デフォルトの名無しさん
垢版 |
2017/01/20(金) 23:36:05.42ID:esT1VQmf
ヘッダに書いたら暗黙でinlineって
#includeの機能しらんとしか思えないんだが
2017/01/21(土) 00:40:48.27ID:dThE4/1u
ちょと混じっちゃったね。
関数を定義されたヘッダーが複数のソースに呼ばれちゃったら、実体が
いっぱい出来ちゃうもんね。
2017/01/21(土) 01:48:12.93ID:RmTA4cQd
江添はなんて言ってる?
2017/01/21(土) 07:06:45.50ID:5NCJ8rOL
forceを信じるのだ
2017/01/21(土) 08:35:23.75ID:P1/rV56D
インライン関数はODR回避のためだと思っていた
C++17(予定)のインライン変数もそんな感じ
2017/01/21(土) 11:00:41.73ID:wrzS/cSB
ODRって何?
2017/01/21(土) 11:17:05.01ID:J7ipYv9j
単一定義則 One Definition Rule の略語
264263
垢版 |
2017/01/21(土) 19:43:36.29ID:J7ipYv9j
「単一定義規則」の方が検索にかかりやすい言葉かも。
2017/01/22(日) 08:28:10.05ID:5o7PrILb
>>261
そうそう。最適化目的でinline付けても普通無視されるからね。
2017/01/22(日) 14:37:23.33ID:hBhrTyQG
https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja
267デフォルトの名無しさん
垢版 |
2017/01/24(火) 12:50:54.05ID:ZplzBBh2
Windows上で、APIを使わずに、コマンドプロンプト上だけで結果が
ほしいような、C言語のプログラムを作るのに便利な開発環境はありますか?
VIsualStudioは重すぎてあまり使いたくありません。
どうぞよろしくお願いします。
2017/01/24(火) 13:20:58.13ID:qjTW56fl
msys2
269デフォルトの名無しさん
垢版 |
2017/01/24(火) 13:39:24.94ID:ZplzBBh2
msysって、どういうものですか?
2017/01/24(火) 13:58:35.63ID:qjTW56fl
>>269
コンパイラツールチェインとターミナルとライブラリ管理のパッケージツールを纏めたものです
エディタは無いし ビルドツールはautotoolsとかcmakeとかを使います
ただ単体ファイルをコンパイルして実行するだけなら
gccを叩くだけなので ご要望に沿うかと
2017/01/24(火) 14:14:08.29ID:tjYeiy24
重いのがイヤなら code::blocks はどうかね
http://demura.net/lecture/12713.html
2017/01/24(火) 20:33:35.20ID:bAAm8CCs
>>267
自分もvisual studio が重いのと好きなエディタ使いたいのと、
でもGUIでファイル管理とかコンパイルエラー行へのジャンプをしたかったの自分でそういうツールを作った。TTVC Developer っていうのだけど
ネット上に公開してるけど反応無いので本当に良くできてるかどうかは
わからんが、自分的には便利だとは思ってる
2017/01/24(火) 20:39:04.14ID:2gaKjsEX
俺はqt creator使ってるな
VSよりマシってくらいだが
2017/01/24(火) 20:46:07.50ID:HHZbO6eg
>>267
notepad.exe
cl.exe
link.exe
275デフォルトの名無しさん
垢版 |
2017/01/24(火) 21:22:57.39ID:nvNd8iP1
Bash on Ubuntu on Windws
2017/01/24(火) 21:41:00.44ID:1ohBhH6C
あれβとれたっけ?
2017/01/27(金) 01:10:08.67ID:c6wkRwWW
*p++ って 参照してからインクリメントですよね。
某書に*(p++)と等価って書いてあったけど。
ん 同じか
2017/01/27(金) 01:47:57.39ID:JFq0FevS
同じだよ
その括弧かあってもなくても実際にインクリメントがされるタイミングには影響しない
2017/01/27(金) 02:43:45.51ID:c6wkRwWW
すまん 評価してからインクリメントは同じだもんね。
2017/01/28(土) 22:24:20.92ID:fbuNIeJW
>>279
いいってことよ

何気に愉快なIDだな
2017/01/29(日) 14:28:58.62ID:XKehhdE4
質問です。
VisualStudio2015でReleaseビルドをしていたところ、生成されたEXEに気になる点がありました

if(false){
printf("hogehoge");
}

という処理を書いたところ、このprintfは到達不可能なのに、EXEの中に"hogehoge"という文字列が含まれていたのです。
※再現コードなのでhogehoeをprintしてなんの意味があるのかというコードですが

到達不能なのが明らかな部分は最適化で削除されるものだと思っていたのですが、何かしらの私の不手際でしょうか?
最適化は /O2オプションです
2017/01/29(日) 15:19:11.63ID:DfD+S+Qh
>>281
/O4とかは?
2017/01/29(日) 15:31:20.39ID:2ZaFXkbr
オプションによる不確定なものをどうして不手際と思ったのか謎
/O2 /GF-なら残る可能性高いし
2017/01/29(日) 17:04:30.90ID:XKehhdE4
アドバイスありがとうございます

>>282
VisualStudioには無いようです。GCCにはあるようですが、ぐぐった限りだと効果はないようなことが散見されました

>>283
「不要なコードを削る」というのは、一番単純で効果が高そうなので、まっさきに確実に全除去してくれるだろうと思い込んでいたためです
この手のコードが最適化で消えないと、ifdefだらけになりそうなのですが、何か対策はないものでしょうか?
2017/01/29(日) 18:59:23.49ID:K+/fnyLa
何かの理由があって残してるという事はないのかな・・・
2017/01/29(日) 19:49:35.57ID:6wGEJq5M
>>281
普通に削除されて文字列もなくなるけど?
2017/01/29(日) 23:12:58.08ID:XKehhdE4
>>285-286
ご返答ありがとうございます。

どうも文字列をあれこれ変えて、消えたり消えなかったりとよくわからない状況になってきました。
とりあえず、VS2015での最小コードを作れましたので貼り付けます

int main()
{
char text[] = "foofoo";
printf("hogehoge");
if (false) { printf(text); }
return 0;
}

こうすると以下の挙動になります。
このまま: exeにhogehoge, foofooの両方が含まれているのを確認できる
printf("hogehoge");を削除: hogehoge, foofooの両方がEXEから消える
※単に0を返すだけの結果固定関数になるため、変数の割り当てすらしなくなるから?
2017/01/29(日) 23:42:21.35ID:DuISdTe+
VS2015の環境を持っていないんで見当違いかも知れんが…。

#include <stdio.h> か #include <cstdio> を書いてみる。
char text[] = ... を const char text[] = ... にしてみる。

これらを(独立して)変えてみたら状態が変わらんかな?
printf()による副作用の可能性を考慮してtextを消さないのかも知れん。


もちろんprintf(&quot;hogehoge&quot;)を呼び出しても
引数になってないtextが読み書きされるはずはないんだけど。
2017/01/30(月) 00:05:47.51ID:iVXSa+56
>>288
アドバイスありがとうございます
すいません。最小コードといいつつincludeをきちんと書いておりませんでした
#include <stdio.h>を最初に書いております
cstdioに変えてみて、各種パターンやってみましたが、変化は見られませんでした

次に、以下です
const char ではfoofooは消えませんでした
const static char に変えたところ、消えました

printfが、中でスタック消費量でも利用しているのかな…と馬鹿なことを考えて
char text〜をグローバル空間に出してみましたが、foofooは消えずです
2017/01/30(月) 13:26:01.87ID:NFw8h2uH
>>289
グローバル変数にするのは最適化されにくくなるだけ。
とりあえずこれで

#include <stdio.h>
int main(){
printf("hogehoge");
if(false){
printf("foofoo");
}
return 0;
}

データセグメントが消えるかどうかは最適化の
目的じゃないと思うが、"foofoo"が残るか見てみると

VS2015
cl /Ox /Fa hoge.cpp きえない
cl /O1 /Fa hoge.cpp きえた
cl /O2 /Fa hoge.cpp きえた

GCC-3.4.5
gcc -S hoge.cpp きえた

まあ所詮VC
2017/01/30(月) 17:50:38.46ID:X+M9ocjS
つまり>>281は嘘つきってこと?
2017/01/30(月) 19:47:42.18ID:p0U51Ig/
exeの中身まで気が回りませんわ
2017/01/30(月) 22:08:56.31ID:mpXbeHjF
exeにビルド時のフルパスが埋め込まれてるとイラっとする
294デフォルトの名無しさん
垢版 |
2017/01/30(月) 22:20:13.70ID:XMGcU10o
デバッグビルドなら普通でしょ
2017/01/31(火) 02:46:33.99ID:SZ8YrWi+
リリースビルドにして、最適化オプションを指定すれば?
2017/01/31(火) 09:17:11.64ID:r8Cb1+5o
デバッグ情報を含めなければいいだけだしな
2017/02/01(水) 01:15:31.17ID:lC8eLy+G
あるクラスに引数で渡されるオブジェクトのconstではない参照を持ちたいんですけどどのようにやればいいでしょうか
ポインタはなるべく使いたくないのですが
class A {
public:
void setParam(Param&);
private:
Param& m_param;
}
状況としては
あるクラスBがクラスAみたいなParamの参照を持つクラスを複数持っていて
クラスBがvector<Param>でParamの実体を持っているという感じです
2017/02/01(水) 01:25:10.63ID:V+KME3Sb
ライフタイムと循環参照のもたらす悪夢を
全部避けられるように熟考しながら
shared_ptr / weak_ptr をどうぞ
Welcome to C++ nightmare!!
299デフォルトの名無しさん
垢版 |
2017/02/01(水) 01:36:32.13ID:nwC60mRJ
shared_ptrの何が難しいのか判らん。
shared_ptr程度で悪夢とか言ってたらswiftも使えなくない?
2017/02/01(水) 02:15:37.65ID:V+KME3Sb
まぁ良く調べて使ってねってのを脅し効かせた程度です 
他の言語で参照カウント型のsmart_ptr解ってるなら 確かに大丈夫
2017/02/01(水) 12:17:29.74ID:RxSebrTI
Windows10でBluetoothを使ったCOM通信を行いたく、
プログラムのほうはCOMポート通信のつもりで書き、
OSの設定でBluetoothに仮想COMポートを追加しました。

Androidとは問題なく接続・通信できたのですが、
Windows10同士ではうまくいきませんでした。
これは仮想COMポート作成するときに、どちらのPCも「受信」(相手側が接続を開始する)にしていたからだと思い、
片方を「送信」に変更しようとしました。
しかし、この場合は接続先PCを指定しなくてはならないのですが
対象PCが選択リスト内に出てこなくて作成することができません。
ペアリングはできているにもかかわらずです。

どうすればWin10PC同士でBluetoothを介したCOMポート接続・通信ができるでしょうか?
2017/02/01(水) 12:30:13.62ID:HL/HxBhd
直接の解はわからないけど、ぐぐって見つかったので確認
ポート開くとき "\\\\.\\COM○○" (○は数字 \はエスケープ込み)
って開いてる?

ポート番号が1桁の場合に限り "COM○"でも開けるらしいけど、
そのコードの延長で 2桁渡すとそれは開けないから
303301
垢版 |
2017/02/01(水) 12:49:42.61ID:RxSebrTI
>>302
あ、はい。それはやってます。

今、わかったのですが、
一旦ペアリングを解除して、改めて「送信」COMポートを追加しようとすると、
先程までペアリングしていた対象PCが選択できるようになりました。

しかし今度は「選択されたデバイスでシリアルポートサービスが実行されていません。」と出て作成されません。
相手側に「受信」のCOMポートは作成済みなのですが…。
2017/02/01(水) 13:25:07.55ID:HL/HxBhd
ttp://kokufu.blogspot.jp/2014/02/windows-bluetooth-spp-server.html
これとかの雰囲気だと
「受信」で作った側のPCのソフトを先に立ち上げて接続待ちにして(SPPサーバー)
「送信」で作った側のPCを後追いで接続 かなぁ
力になれなくてすまん
305301
垢版 |
2017/02/01(水) 14:06:25.03ID:RxSebrTI
>>304
いえいえ!
色々と調べていただいて参考になりました。

どうもシリアル接続サービスをサポートしていないようです。
今回の条件ではあまり好ましくないのですが、
WiFiを使ったソケット通信で妥協することにします。

ありがとうございました。
2017/02/01(水) 14:21:22.91ID:+8V+I8xy
>>298-300
ありがとうございます
帰ったら勉強してみます
307デフォルトの名無しさん
垢版 |
2017/02/01(水) 20:39:39.90ID:3j6uP7e4
>>297
参照をメンバで持ちたい時は、コンストラクタでの初期化以外は無理。

class A {
public:
A(Param& x):m_param(x){}
private:
Param& m_param;
};
2017/02/02(木) 01:04:42.40ID:CAgg+EtY
shared_ptr,weak_ptrのことで質問なのですが
自クラス2つを引数に取る+演算子をオーバーロードしているクラスMatrixを使って
func(std::weak_ptr<Matrix> m1, std::weak_ptr<Matrix> m2){
mat = m1 * m2;

}
みたいにやりたいんですが、オペランドに一致する演算子がないと言われます
shared_ptr,weak_ptrに入れた場合どのようにしてオーバーロードされた演算子を利用できますか?
2017/02/02(木) 01:27:35.78ID:FXYEZ0RW
>>308
weak_ptr から shared_ptr を作って、それを通して参照すればいい
・・・んだけど、それ weak_ptr::expired() な場合にどうするつもりなん?
2017/02/02(木) 02:04:10.33ID:CAgg+EtY
>>309
ありがとうございます
weak_ptrを使っている理由は
funcはあるクラスのメンバ関数で、引数で渡されたポインタの所有権をクラスが持たないこと示すためにweak_ptrを使っているのですが
weak_ptr::expired()な場合は想定していません
311デフォルトの名無しさん
垢版 |
2017/02/02(木) 02:21:14.81ID:ExAPXdhA
>>310
なんか根本的に勘違いしてる感が
const referenceの関数見たら中でポインタ持ち続けちゃう心配とかしてんの?
2017/02/02(木) 02:21:18.81ID:EB2HJN86
スマートポインタはポインタのように振る舞うものだから
*や->でポインタの指す値にしなければならないよ
2017/02/02(木) 10:51:03.92ID:335RX4F5
VS2015で.objを.libに変換してリンクできなくて悩んでいます
そういうことはできないのでしょうか?


複数のC++ファイルをビルド→.objが複数できる

新しいEXEプロジェクト作る→main()を用意→そこの.vcxprojを編集して複数の.objをincludeする→ビルドで正常な.exeできる(exeサイズ10MB)
 include方法は<Object Include="abc1.obj" /> <Object Include="abc2.obj" />・・・

新しいスタティックライブラリプロジェクト作る→そこの.vcxprojを編集して複数の.objをincludeする→ビルドで.libができる(libサイズ100MB)
→新しいEXEプロジェクト作る→main()を用意→追加のライブラリで.libをリンクする→ビルドで動かない.exeできる(exeサイズ1MB)

動かない.exeのビルド時はリンカーエラーなど出ません
exeサイズが期待しているよりも小さく、実行時に例外で強制終了します
2017/02/02(木) 12:49:56.83ID:cH1kwi7M
例外を具体的に
2017/02/02(木) 13:18:13.30ID:Nq0thOwX
>>314
> ハンドルされない例外がスローされました:読み取りアクセス違反。
> xxxxx が nullptr でした。
xxxxxはポインタ変数

exeサイズが小さいからリンクできてるように見えてリンクできてないのかなとは思うけど
libの追加方法を#pragma comment(lib,"")にしてもうまくいかずでどうしたらいいものか
2017/02/02(木) 18:40:08.32ID:qO0hDPsp
>>313
> vcxprojを編集して複数の.objをincludeする
なんか色々勘違いしてないか?
317デフォルトの名無しさん
垢版 |
2017/02/02(木) 18:48:07.72ID:S7kpFPUA
>>316
そういう実験してるんでしょ。
それを他人に聞いて何か返ってくると思ってるのが間違ってる感があるけど。
2017/02/02(木) 19:11:39.98ID:Eu4e1EaI
>>316
objからlibを作って動くならそれがいいのだけどその方法が分からない
lib.exeでobjからlibを作って使っても同じ状況
2017/02/02(木) 19:16:04.83ID:WkIFQVuy
>>317
普通とは違うことをしているなと思ったが、実験しているのか
vcxprojを編集してソースコードではなくobjを用いるVSプロジェクトを作りたいのかな
2017/02/02(木) 19:18:03.73ID:qhXDtbED
.c, .cpp から .lib 作るプロジェクト -(A)
そいつをリンクしつつ、 .c, .cpp から実行ファイルを作るプロジェクト -(B)
(参照設定とか依存関係とかで (A) を使うぜ俺 って指定する)
2017/02/02(木) 19:38:57.55ID:WkIFQVuy
こんな感じだろ
ソースからobj生成: VSプロジェクトでなくていい
VSプロジェクト
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからず)
3. 上のlibからexe作るVSプロジェクト (exeが例外でNG)
2017/02/02(木) 19:51:53.25ID:Eu4e1EaI
>>321
まさにその状態
>>320の(A)が作れればいいけど、objファイルは数百プロジェクトの600ファイルぐらいあるから試そうにも数日かかりそうで避けたい
今は全プロジェクトまとめたソリューションあるけどリビルドだけで1時間以上かかる。簡単にexe作れるようにしたいというのが原点
2017/02/02(木) 20:22:53.95ID:k638XiO/
そこまで行ったらDLLに分けるだろう
324313
垢版 |
2017/02/03(金) 13:56:09.01ID:3xPmzf3n
4番をやってみましたが結果OKでした
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからないが、4がOKで作れてる可能性高い)
3. 2のlibからexe作るVSプロジェクト (exeが例外でNG)
4. 2のlibからobjを抽出して、そのobjからexe作るVSプロジェクト (結果OK)

作業の前提条件として下の2つは意味が同じと思っているのですが、違いがあるのでしょうか?
cppをコンパイルしてobjにし、objをリンクしてexeを作る
cppをコンパイルしてobjにし、objをlibに変換してからリンクしてexeを作る
2017/02/03(金) 13:56:30.01ID:OeN1TpCU
Ubuntu16.04,gcc5.4.0で,書籍を参考に下記のプログラムを
コンパイル(gcc program.c -lalut -s -o program)したところ,
「'nullptr' was not declared in this scope」というエラーになりました
何が間違っているのか教えてください

---program---
#include<AL/al.h>
#include<AL/alc.h>

int main() {
//OpenAlの初期化
//デバイスを開く
ALCdevice* device = alcOpenDevice(nullptr);

//コンテキストを生成
ALCcontext* context = alcCreateContext(device, nullptr);

//生成したコンテキストを操作対象にする
alcMakeContextCurrent(context);

//OpenALの後始末
//操作対象のコンテキストを解除
alcMakeContextCurrent(nullptr);

//コンテキストを破棄
alcDestroyContext(context);

//デバイスを閉じる
alcCloseDevice(device);
}
2017/02/03(金) 14:06:26.05ID:S9UE3yae
nullptrはC++11からの機能だからですね
"gcc" -> "g++ --std=c++11"を使ってください

元のコンパイルは-lalutを指定していますが
そのプログラムならOpenALだけで大丈夫なので 下記で通ります
ライブラリをpkg-configに探させてるだけです

g++ --std=c++11 program.c `pkg-config openal --libs` -o program
2017/02/03(金) 14:55:43.86ID:xVLuMTde
>>324
一般論で言えば同じはず。
ファイルサイズが小さいのなら正常にリンクできてない。
使ってない関数やクラスをリンクしてるわけじゃないよね
2017/02/03(金) 15:42:48.87ID:3xPmzf3n
>>327
使ってるのも使ってないのもある

libの追加方法は二通り試したけどどちらもビルドエラーはでないけど実行時NG
どちらもlibの追加を省略すると外部シンボルが見つからないエラーでビルドが通らない

プロジェクトのプロパティの「追加の依存ファイル」から→実行時NG
ソースファイル中に「#pragma comment(lib,"")」から→実行時NG
329デフォルトの名無しさん
垢版 |
2017/02/04(土) 00:14:20.36ID:z/XsYQOx
何もしていない普通の一般人の自宅に隠しカメラを取り付け
それをネットでリアルタイム配信

仲間という人間に対する盗聴盗撮生ネット配信の会

しかけたカメラの映像
乗っ取っているPCの画像をリアルタイムで生配信中
集団で仲間の私生活を覗いて楽しんでいる

そんなことが今この国では行われています
2017/02/04(土) 05:54:43.47ID:/r5Uxr2+
libでリンク解決してもダイナミックリンクにしてれば実行時にパス内に見つからずにエラー
スタティックリンクにしないと
2017/02/04(土) 09:51:58.52ID:GdM1I4zb
久々にプログラミングしようと思うんですけど
USBカメラがあるからそれを使って監視カメラにしたいんだが
ピクセルデータが取れればあとは簡単だと思うんだけど、その前に
この適当に昔買ったバッファローのUSBからデータ取り出す事って可能なんですか?
2017/02/04(土) 10:24:35.81ID:94H9RTyk
>>330
lib作るときのプロジェクトタイプはスタティックライブラリにしているけど、それとは別に設定であるのでしょうか?

>>331
「usbカメラ キャプチャ c++」で検索すると色々な方法が見つかるよ。よほど変なカメラ出ない限り仕様は同じだから使える
2017/02/04(土) 10:55:19.44ID:GdM1I4zb
>>332
ありがとうございますだ
2017/02/04(土) 21:25:32.55ID:uqEM2LY/
int a = 0;
int *b = &(1+a);
これが出来ないのはなぜですか?
1+aの計算結果というのはメモリ上のどこかにあると思うんですが
2017/02/04(土) 21:28:28.23ID:sK4bvJ1n
>>334
CPUのレジスタには物理アドレスが無い。
2017/02/04(土) 21:31:18.24ID:3pCbKNVT
&1 を許すとややこしいことになりそうだ
2017/02/04(土) 21:38:25.89ID:wIflvrKT
>>334
計算結果はレジスタに入っててメモリには入ってないんじゃない?
2017/02/04(土) 21:52:37.41ID:uqEM2LY/
>>335-337
なるほど、勘違いしてました
ありがとうございます
2017/02/05(日) 19:35:43.24ID:ktep0Dpi
>>326
遅くなりすいません
できました
ありがとうございました
2017/02/05(日) 22:43:20.73ID:F2ePDpTS
>337
レジスタがメモリじゃないかのようなアホレスだな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況