[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/03 12:56 / Filesize : 271 KB / Number-of Response : 1015
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part130



1 名前:デフォルトの名無しさん(ワッチョイ f37a-QmV0) mailto:sage [2017/03/31(金) 08:47:49.65 ID:UkLjKqcm0.net]
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part129
echo.2ch.net/test/read.cgi/tech/1483940967/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
echo.2ch.net/test/read.cgi/tech/1478440682/

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

779 名前: ◆QZaw55cn4c (ワッチョイ 6e9a-n9U6) mailto:sage [2017/07/13(木) 21:25:32.45 ID:NDMOLt7F0.net]
>>76

780 名前:8
https://www.amazon.co.jp/dp/4789830292/
[]
[ここ壊れてます]

781 名前:デフォルトの名無しさん (ワッチョイ 6e9a-YkGU) mailto:sage [2017/07/13(木) 21:27:47.04 ID:lX8cJUTX0.net]
そうだね
基礎から教えるつもりはない

応用、テクニック、実装方法、高速化、AVX512の使い方、キャッシュサイズによる最適化、HDDを使った場合の並べかえ方法、...
など具体的に聞いてくれれば

782 名前:デフォルトの名無しさん (ワッチョイ 469f-wtyE) mailto:sage [2017/07/13(木) 21:34:36.15 ID:RqiuYpPc0.net]
やりたいことはリアルタイムオシロですかね
ビジュアル的に表示出来ることから始めて
最終的にはArduinoで周波数検波器作りたいかも

783 名前:デフォルトの名無しさん (ワッチョイ 469f-wtyE) mailto:sage [2017/07/13(木) 21:38:11.93 ID:RqiuYpPc0.net]
>>771
ほしいものリストに追加しますた
ありがとうございますた

784 名前:デフォルトの名無しさん (ワッチョイ 321b-HOJV) [2017/07/14(金) 06:45:45.62 ID:JUkrjA2t0.net]
>>760
バレルシフタが何かわからんアホはすっこんでろ

785 名前:デフォルトの名無しさん (ワッチョイ 6e9a-YkGU) mailto:sage [2017/07/14(金) 07:04:53.46 ID:dCevqkg20.net]
>>759の真ん中のブロック、意味がわかるなら解説よろしく

786 名前:デフォルトの名無しさん (スップ Sdc4-aKa0) mailto:sage [2017/07/15(土) 13:45:59.81 ID:fnbVxk0dd.net]
VBから読み出せるdllを作るときの注意点ってある??

787 名前:デフォルトの名無しさん (ワッチョイ f6e4-PXrN) mailto:sage [2017/07/15(土) 14:17:18.00 ID:u0zSb1i50.net]
メモリ管理



788 名前:デフォルトの名無しさん (スプッッ Sd9e-y/ao) mailto:sage [2017/07/15(土) 15:27:55.38 ID:GMW24mlhd.net]
>>777
__stdcall呼び出しにする
ってかどのVB?

789 名前:デフォルトの名無しさん (スップ Sdc4-aKa0) mailto:sage [2017/07/15(土) 17:14:07.14 ID:fnbVxk0dd.net]
>>779
vb6.0っていう化石

790 名前:デフォルトの名無しさん (スプッッ Sd9e-y/ao) mailto:sage [2017/07/15(土) 17:26:21.05 ID:GMW24mlhd.net]
>>780
ふーん、なら
VB側のByRef x As Variant は、C++側で
Variant* pV とVariant& x のどっちでも受けられる
これ豆な

791 名前:デフォルトの名無しさん (スプッッ Sd9e-y/ao) mailto:sage [2017/07/15(土) 17:33:23.30 ID:GMW24mlhd.net]
>>780
あと、文字列はBSTRで受けるとなぜか文字化けすることがある。
Variantで受けてbstrValメンバを取り出すと大丈夫。(もしくはpbstrValメンバ)
不思議だ。

792 名前:デフォルトの名無しさん (ワッチョイ 0aa6-1m9k) mailto:sage [2017/07/16(日) 16:02:40.33 ID:o1PqrRM30.net]
テンプレートの部分特殊化について質問っす
ideone.com/Rz72oc
この例なんで曖昧になるですかね?
下が選ばれると思ったんですが

793 名前:デフォルトの名無しさん (ワッチョイ 955a-qt4g) [2017/07/16(日) 16:21:43.57 ID:CxpOV7IS0.net]
const が付いてるからじゃね

794 名前:デフォルトの名無しさん (ワッチョイ 0aa6-1m9k) mailto:sage [2017/07/16(日) 17:06:50.01 ID:o1PqrRM30.net]
>>784
constなintなのにconst T&のconst関係なくない?
それにT(&)[4]の方がより細かい気がする

795 名前:デフォルトの名無しさん (ワッチョイ 955a-qt4g) [2017/07/16(日) 18:31:12.78 ID:CxpOV7IS0.net]
struct A<T (&)[4]> は、
struct A<const T &> の特殊化じゃないんじゃね?

796 名前:デフォルトの名無しさん (ワッチョイ f146-I8+U) [2017/07/16(日) 18:46:15.15 ID:TI5o59vg0.net]
テンプレート引数型を明示してるのに、その型に一意にマッチする定義がないからでしょ。
どっちが近いかを決定するような優先順位の規定がないので ambiguous になる。
compiler からしてみたら仕様がなければ勝手に判断できないって話。

797 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd70-qcL/) mailto:sage [2017/07/16(日) 18:49:24.15 ID:8ivnKhmqd.net]
int (&)[4]の左側にconst付ける意味あんの?



798 名前:デフォルトの名無しさん (オッペケ Srea-1m9k) mailto:sage [2017/07/16(日) 19:11:25.11 ID:0XlWr73/r.net]
>どっちが近いかを決定するような優先順位の規定がない
何故か規格を読まない奴ほど自信満々に嘘をつく法則

799 名前:デフォルトの名無しさん (オッペケ Srea-1m9k) mailto:sage [2017/07/16(日) 19:21:41.99 ID:0XlWr73/r.net]
規格の8.3.4p1により配列のconstは要素のconstと等価なので、A<int const (&)[4]>はA<T const &>に適合する

800 名前:デフォルトの名無しさん (ワッチョイ f6e4-PXrN) mailto:sage [2017/07/16(日) 19:35:17.35 ID:F/PpVxkG0.net]
C++14まででいいので全文日本語の規格書くれよ

801 名前:デフォルトの名無しさん (ワッチョイ 0aa6-1m9k) mailto:sage [2017/07/16(日) 20:01:11.52 ID:o1PqrRM30.net]
優先順位ルールよくわからんっす

802 名前:デフォルトの名無しさん (スプッッ Sd2a-aKa0) mailto:sage [2017/07/16(日) 20:21:10.26 ID:5frVCgipd.net]
>>782
vbやったことないからなるほどよくわからん...
vb6.0についてとか全然書籍とかもないから本当に困る

803 名前:デフォルトの名無しさん (ワッチョイ f6e4-PXrN) mailto:sage [2017/07/16(日) 20:26:00.20 ID:F/PpVxkG0.net]
古代言語の解読は自己責任だ
細かいこと考えたくなければ標準入出力で繋げばいい

804 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ d015-S4qQ) mailto:sage [2017/07/16(日) 20:41:20.06 ID:tihnLl5v0.net]
>>791
JIS に働きかけてくれ

805 名前:デフォルトの名無しさん (ワッチョイ f146-I8+U) [2017/07/16(日) 21:06:56.01 ID:TI5o59vg0.net]
>>790
ありがとう、探してくれて。

806 名前:デフォルトの名無しさん (オッペケ Sr10-1m9k) mailto:sage [2017/07/16(日) 21:31:30.43 ID:Z5uaiz2pr.net]
テンプレートの部分順序は規格1400ページの中で恐らく最も難解
順序はテンプレート実引数と関係無く仮引数同士で判定され、直感的には
 P (&)[4] ← struct X {} const & × Pの導出不可
 P const & ← struct X {} (&)[4] × Pの導出不可
によりambiguous
規格の説明は14.5.6.2, 14.8.2.4, 14.8.2.5

807 名前:デフォルトの名無しさん (ワッチョイ 1a42-Z+b3) mailto:sage [2017/07/17(月) 06:43:20.69 ID:WTwWKmZ80.net]
>>674
プロパティってのはオブジェクトの状態の抽象化

例えば、コンテナのlistのsizeはコンテナとしての状態
sizeは要素数に対して定数時間で取得可能って条件があるからメンバ変数としてsizeを持ってる
そうでなければ線形時間になってしまう
vectorは大抵の場合、確保したメモリの始端と終端、要素の終端を表すポインタをメンバ変数に持つけど
ポインタ演算で定数時間で求められるから、sizeのメンバ変数は持っていない
emptyも状態、listもvectorも空を表すbool型のメンバ変数は持たないけど
コンテナとしてemptyかどうかの状態を取得できるわけで、メンバ変数と対とはなっていない

つまり、クラス設計上必要なオブジェクトとしての状態のget/setが目的であって
外部からメンバ変数にアクセスするための機能ではないよ(単にそれも出来るよってだけ)

>>700
charのポインタを4バイト幅の符号無し整数型にキャスト
その毎にビット演算、ループ数も32回で済む
エンディアンは気にしないw



808 名前:デフォルトの名無しさん (オッペケ Sr10-1m9k) mailto:sage [2017/07/17(月) 09:28:01.08 ID:ESb998SRr.net]
>エンディアンは気にしないw
物は言い様で、本当は触ったことが無いのであった
AIXやSPARC使いに「インテル能乙」と揶揄されても仕方ない

809 名前:デフォルトの名無しさん (ワッチョイ 1a42-Z+b3) mailto:sage [2017/07/17(月) 09:43:52.37 ID:WTwWKmZ80.net]
>>799
1つの方法を示しただけで、必要なら気にしたら良いってレベルの話なんだけどな
質問者も完全な解決策ではなくアイディアを求めているだろうし

810 名前:デフォルトの名無しさん (ワッチョイ 3eaf-iUs+) mailto:sage [2017/07/17(月) 09:52:45.96 ID:NM7AtMtK0.net]
エクスプレッションテンプレートを使った二項演算子のオーバーロードって
・グローバル空間全体
・特定の名前空間で定義して、使う部分ではその名前空間を指定
のどちらかになるということになりますか?
つまり通常のクラスの演算子オーバーロードのようにクラス単位に限定する方法はなさそうです?

811 名前:デフォルトの名無しさん (オッペケ Sr10-1m9k) mailto:sage [2017/07/17(月) 22:32:17.08 ID:ESb998SRr.net]
通常のクラスの例であるstd::complex<>は二項演算子を使う部分で名前空間など指定しなくても良いし
そのオーバーロード関数はクラスではなくstd名前空間に限定している
式テンプレートでそれ以上のことが必要なのだろうか

812 名前:デフォルトの名無しさん (ワッチョイ 7011-MRQN) mailto:sage [2017/07/18(火) 00:26:51.30 ID:2CukONSS0.net]
名前空間で定義して、ETで使うクラス全て特定の名前空間内で定義するか、
ライブラリが提供する型以外を許容しないなら、演算子を各クラス内に定義するだけでいい

ETと協調しうるあらゆる型も許容するために
template <typename T, typename U>
fugaexpression<T, U, ...> operator +(T t, U u);

と書きたいのなら、演算子を名前空間内に書くとか
enable_ifで条件に合わないものを弾くなりしないといけない

813 名前:デフォルトの名無しさん (ワッチョイ 7011-MRQN) mailto:sage [2017/07/18(火) 12:37:46.49 ID:2CukONSS0.net]
訂正
ETだから参照でないといかんね
operator +(T &&t, U &&u)

814 名前:デフォルトの名無しさん (ワッチョイ 3eaf-iUs+) mailto:sage [2017/07/18(火) 12:44:00.00 ID:VOd4+Wz60.net]
なんとなくわかりました
やってみます

815 名前:デフォルトの名無しさん (ブーイモ MMfd-I8+U) [2017/07/18(火) 12:53:11.11 ID:CTdksPCiM.net]
式テンプレート作るのと、右辺値参照モノをしっかり作り込むのとどちらが良さげ?

816 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/18(火) 14:06:03.25 ID:C2L8wOjPd.net]
上でVB6.0について質問してるものだけどさらに重ねて質問させてください
VB6.0→C++に通信してる箇所が存在していてそこがstring→char※になってる
これって文字化けしないの??

817 名前:デフォルトの名無しさん (スップ Sd02-y/ao) mailto:sage [2017/07/18(火) 15:57:42.98 ID:LmZYlO3Ud.net]
>>807
さあ?
"まみむめも"でも試しに入力してみれば?



818 名前:デフォルトの名無しさん (アウアウエー Sa66-C5HA) [2017/07/19(水) 07:57:29.52 ID:4WYjcaP8a.net]
>>807
コード内で文字列生成して表示したらエンコードが違って文字化けとかあるけど、外部から文字列受け取ってただ表示するだけならエンコードとか関係ないから問題は無い。
(ただのバイト列)
外部から文字列受け取ってそれを加工するとかだと問題ある時はあるが。

819 名前:デフォルトの名無しさん (ワッチョイ 3eaf-iUs+) mailto:sage [2017/07/19(水) 14:22:33.44 ID:cdBaS5I50.net]
804ですが
>>803
>名前空間で定義して、ETで使うクラス全て特定の名前空間内で定義する
これでできました。
ありがとうございます。

820 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 20:36:51.87 ID:ogeQAtV7d.net]
>>809
サンクス!!!
いじらないことにした

明示的なdllの呼び出しも出来なくて震えてます
Getprocaddressが出来ずに進まないです
何か間違っている箇所があれば教えてほしいです
dllは同階層に配置してます

あとdll側の宣言でWINAPIがあるパターンとないパターンを見るのだけども
必要ないってことはあり得るのでしょうか

dll側
_delspec(dllimport) int WINAPI AAA(int,int){
return 0;


呼び出し側
HINSTANCE hDLL; int (*func)(int,int);
if ((hDLL = LoadLibrary("AAA.dll")) == NULL)
printf("LoadLibrary is failed.\n");
else { if ((func = (int (*)(int,int))
GetProcAddress(hDLL, "AAA")) == NULL) printf("GetProcAddress is failed.\n");
else printf("main %d\n", func(1,1));
FreeLibrary(hDLL);
}

821 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 20:49:13.06 ID:MaD+cEa1d.net]
>>811
importとexportを間違ってるよ。

822 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 21:54:41.55 ID:ogeQAtV7d.net]
>>812
あ ごめん
そこはexportってしてるから問題ない
スマホで書き込む際に間違えただけです

823 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:02:10.86 ID:MaD+cEa1d.net]
まずは、出来たdllをダンプしてみな。関数型にはWINAPIが必要だよ。

824 名前:デフォルトの名無しさん (オッペケ Srea-hJ3a) mailto:sage [2017/07/19(水) 22:06:19.96 ID:QocMLB2Ar.net]
>>811
>間違っている箇所があれば教えてほしいです
ほれ
1. (int (*)(int,int))
2. GetProcAddress(hDLL, "AAA")

825 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:06:40.85 ID:MaD+cEa1d.net]
こういう場合は関数ポインタ型をtypedefしたら楽だよ。

826 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 22:10:20.05 ID:ogeQAtV7d.net]
>>815
ここ間違ってる?
dll側の関数の引数に合わせてるのと、getprocaddressを使って関数呼び出してるだけだから問題ないと思ってるのだけども


>>816
それって
>>811
>間違っている箇所があれば教えてほしいです
ほれ
これをint (*)(int,int)を定義するってことよね?

827 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:12:49.52 ID:MaD+cEa1d.net]
typedef int (WINAPI *MYFUNC)(int, int);



828 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 22:13:35.01 ID:ogeQAtV7d.net]
__stdcallがないってことか!!!!!

829 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:14:01.35 ID:MaD+cEa1d.net]
dumpbinというダンプツールがあるから、それを使ってdllの情報をダンプする。

830 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:16:16.73 ID:MaD+cEa1d.net]
どうやってdllを作った? 初心者だから作り方間違ってる可能性がある。

831 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 22:18:12.53 ID:ogeQAtV7d.net]
>>821
ダンプするってのがほぼほぼ理解できてない

visualstudioでdll選んで空のプロジェクトを選んだ
それでcpp追加してその内容にさっきの構文とおまじないのwinmainを書いてビルド

832 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:21:21.65 ID:MaD+cEa1d.net]
>>822
dllの場合はWinMain要らない。ダンプは専用のコマンドプロンプトで行う。ってことは、コマンドプロンプトの使い方も勉強しないといけない。

833 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:22:37.56 ID:MaD+cEa1d.net]
DLLの場合はDllMainだね。

834 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 22:25:28.38 ID:ogeQAtV7d.net]
>>824
あ それか
落ちてる理由はそこな気がしてきた...

835 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:25:41.24 ID:MaD+cEa1d.net]
あっ、それからC++からC言語の関数を定義・参照するにはextern "C"を付けないといけない。

836 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:31:08.38 ID:MaD+cEa1d.net]
C++関数のシンボル名は「mangling」によって変な名前になり、コンパイラーによって違うから(標準化されていない)、DLLでは使いづらいので、C言語関数にすることが多い。

837 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:39:22.35 ID:MaD+cEa1d.net]
DLL内部の輸出関数にextern "C"を付けてC言語関数にする。
関数ポインター型をtypedefする。
DLLをダンプして関数シンボル名を確認する。



838 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 22:41:38.53 ID:ogeQAtV7d.net]
>>826
C言語の関数を定義参照するってのは.cファイルが出てきたときの話よね?

839 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:43:26.89 ID:MaD+cEa1d.net]
コンパイラーによって違うが、C言語関数が__cdeclのときは、そのシンボル名は先頭に下線が付き、__stdcallのときは関数名そのままだったかと。

840 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:46:12.04 ID:MaD+cEa1d.net]
>>829
C++でDLL関数を参照するときは、DLL関数がC言語関数でないと、シンボル名がややこしくなって、GetProcAddressが難しくなるよ。ダンプすればシンボル名が確認できる。

841 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 22:51:10.86 ID:ogeQAtV7d.net]
>>831
CでもC++でも構わないのだけどその関数のなかでクラスを呼ぼうとしてるのだけど可能なのだろうか??

>>830も少し気になったのだけど
__stdcallしてたのにリンカエラーの時に__cdeclのリンカエラーが出ていた

842 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:54:29.77 ID:MaD+cEa1d.net]
スタートメニューのVSの項目に、「なんちゃらコマンドプロンプト」というのがあるはずだ。
ソイツを起動すると黒い画面が出て来て、キーボードで「CD」コマンドで対象のフォルダに移動。
dumpbinに適当なコマンドライン引数を付けてEnter。

843 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:56:32.59 ID:MaD+cEa1d.net]
>>832
DllMainにも__stdcallが必要。

844 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 22:59:03.92 ID:MaD+cEa1d.net]
>>832
関数の引数と戻り値がC言語関数に見えれば中身C++でもOkay。

845 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 22:59:52.02 ID:ogeQAtV7d.net]
>>835
そうなんだ
じゃあextern cつけておいた方が安全みたいなのね
名前解決しやすいかしにくいかの話になるんだね

846 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 23:00:31.80 ID:MaD+cEa1d.net]
__stdcallやWINAPIなどを付けなければ、デフォルトで__cdeclになる。

847 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 23:02:59.40 ID:MaD+cEa1d.net]
コンパイラーによってはデフォルトの呼び出し規約を変更できるかも知れない。



848 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 23:07:11.36 ID:MaD+cEa1d.net]
複数の関数を、extern "C" { ... } で囲ってもいいし、関数の直前にextern "C"を付けてもいい。

849 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 23:10:05.85 ID:ogeQAtV7d.net]
>>839
個々につけた方が明示的で良いように思ったので個々でつけることにします
dll難しい....

linuxのsoファイル作成のソースコードと、winのdll作成のコードを共通化しようとしたら
defineで切るしかない??

850 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 23:14:11.62 ID:ogeQAtV7d.net]
質問ばかりで申し訳ないけどもヘッダファイルって作られないのかな?

dll側で定義した関数を公開するときにインポートライブラリで読み込ませるならばヘッダファイル必要になると思うのだけど
それは自身で作成することになる??

851 名前:デフォルトの名無しさん (ワッチョイ f6e4-PXrN) mailto:sage [2017/07/19(水) 23:16:07.85 ID:rRbujBCW0.net]
>>840
Boost.DLLを使う

852 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 23:17:50.12 ID:MaD+cEa1d.net]
>>841
Unmanaged C/C++では、慣習として、公開するヘッダーファイルは自分で書かないといけない。
それは公開する範囲を決める意味で重要な作業になる。

853 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 23:25:33.39 ID:MaD+cEa1d.net]
WinMainやDllMainなど以外で自分で作った関数については、WINAPIよりもAPIENTRYを使うのがマナー。

854 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 23:28:24.94 ID:ogeQAtV7d.net]
>>844
なんだそのAPIENTRYというのは

>>842
さらに知らない単語も出てきた

855 名前:デフォルトの名無しさん (ワッチョイ 96ea-zKZC) mailto:sage [2017/07/19(水) 23:30:05.93 ID:K+rHLYmS0.net]
もう面倒だからC#で作れよ

856 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 23:32:25.59 ID:MaD+cEa1d.net]
<windows.h>の中身を覗いてみると、Win32APIの流儀が見えてくる。時間泥棒かも知れないが、それが面白い。

857 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 23:35:11.33 ID:MaD+cEa1d.net]
Boostという準標準ライブラリ群があって、Boost.DLLはその一部。APIENTRYマクロはWINAPIマクロの別名。



858 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 23:39:27.90 ID:MaD+cEa1d.net]
面倒なのが嫌なら最初からC#使え。C++は素人が来るところではない。

859 名前:デフォルトの名無しさん (スプッッ Sd9e-aKa0) mailto:sage [2017/07/19(水) 23:46:25.94 ID:ogeQAtV7d.net]
>>846
開発でC++が必須なんだ..

860 名前:片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/) mailto:sage [2017/07/19(水) 23:50:31.02 ID:MaD+cEa1d.net]
で、問題は解決したか?

861 名前:デフォルトの名無しさん (ワッチョイ f6e4-PXrN) mailto:sage [2017/07/19(水) 23:52:51.09 ID:rRbujBCW0.net]
それはいいけどググればすぐ解決する程度の問題をわざわざ人に聞くべきではない

862 名前:デフォルトの名無しさん (ワッチョイ 274b-FPZE) mailto:sage [2017/07/20(木) 00:02:01.05 ID:a17NgPNI0.net]
ググれってよく見るけど、最近はググった結果がQiitaとかで余計わからなくなる人いそう

863 名前:デフォルトの名無しさん (スプッッ Sd7f-7lrd) mailto:sage [2017/07/20(木) 00:26:00.45 ID:68uSpz6dd.net]
>>852
ぐぐった結果色々な方法がありすぎてどれが正しいか判断つかなくてここにきた

>>851
今は自習中
明日の業務で試してみます

864 名前:デフォルトの名無しさん (ワッチョイ 47e4-OcZC) mailto:sage [2017/07/20(木) 00:35:16.57 ID:am65me5o0.net]
色々は無いでしょ

865 名前:デフォルトの名無しさん (ワッチョイ dff0-E/h9) mailto:sage [2017/07/20(木) 11:41:47.84 ID:aRd+na0X0.net]
>>847
<windows.h>の中身を覗いてMSの片鱗を味わったがsmallに引っ掛かって1時間ほど時間を潰した
どうしてくれるんだ

866 名前:デフォルトの名無しさん (オッペケ Sr1b-3YgS) mailto:sage [2017/07/20(木) 19:54:56.95.net]
>>854
ひょっとしてまだやってるのか?
方法1:
1. 型をint (__stdcall *)(int,int) にする
2. GetProcAddressに渡す名前を"?AAA@@YGHHH@Z"の様な名前にする
 この名前はVisual Studio付属のコマンドで
 「dumpbin.exe /exports unko.dll」にて確認
 32ビットと64ビットでは名前が異なるので注意
方法2:
1. 型をint (__stdcall *)(int,int) にする
2. テキストファイルunko.defを作り
EXPORTS
(TAB)AAA
と書いてプロジェクトのプロパティのリンク設定でこのファイルをモジュール定義ファイルに指定する

867 名前:デフォルトの名無しさん (ササクッテロリ Sp1b-Iuq2) [2017/07/20(木) 23:54:34.71.net]
winapiの流儀とか見ていて吐き気を催す



868 名前:デフォルトの名無しさん (ワッチョイ 47e4-OcZC) mailto:sage [2017/07/21(金) 00:44:29.75.net]
WINAPIのtypedefされた型を元のプリミティブ型に書き直すのが趣味です

869 名前:デフォルトの名無しさん (ワッチョイ dfaa-E/h9) mailto:sage [2017/07/21(金) 00:47:34.17.net]
F12を叩きたいのか

870 名前:デフォルトの名無しさん (ワッチョイ df9f-2Ge4) mailto:sage [2017/07/21(金) 04:01:38.56.net]
extern "C" __declspec(dllexport) int __stdcall func(int,int){}
"?AAA@@YGHHH@Z"のような吐き気催す引数無くした名前だけ出力したい場合は extern "C" を前に付けると解決

871 名前:デフォルトの名無しさん (ワッチョイ a7b4-jxVo) mailto:sage [2017/07/21(金) 07:00:36.74.net]
qiita.com/YukiMiyatake/items/9c099041eab9ee8b349d
uniqu_ptrに頼って生歩使わないとか、
そんなだったらはじめからC++なんか使うな
アホはC++使うなって見本

>リソースを生で使うのは アンチデザパタです!
それがどーした。パターンでしか考えられないお前

872 名前:デフォルトの名無しさん (ワッチョイ a709-leQM) mailto:sage [2017/07/21(金) 07:42:02.40.net]
えらいねー。

873 名前:デフォルトの名無しさん (スッップ Sdff-AsiQ) mailto:sage [2017/07/21(金) 07:57:26.95.net]
所有権を持った人が自分でnew deleteするってのは確かにもうあり得ないでいいだろう。
それを「生ポインタを使わない」と表現するのは言い過ぎというか誤解を生む。

874 名前:デフォルトの名無しさん (ワッチョイ 274b-G5Pk) mailto:sage [2017/07/21(金) 08:46:52.32.net]
生保使う場面ってどんな時だろ?

875 名前:デフォルトの名無しさん (ドコグロ MM9f-tIP3) mailto:sage [2017/07/21(金) 08:47:22.86.net]
delete禁止構文欲しいぜ

876 名前:デフォルトの名無しさん (ワッチョイ a709-leQM) mailto:sage [2017/07/21(金) 08:49:46.05.net]
生ぽは、その場で文字列生成して関数に食わせる以外は参照だなぁ。

877 名前:デフォルトの名無しさん (ドコグロ MM9f-tIP3) mailto:sage [2017/07/21(金) 08:54:06.32.net]
>>865
nullptr受け取る可能性のある古臭い設計のコードを使うときじゃね?
自分で設計するときは使わん。



878 名前:デフォルトの名無しさん (スッップ Sdff-AsiQ) mailto:sage [2017/07/21(金) 10:34:18.10.net]
自分でnew deleteするなんて発想が無くなってきたから別にポインタ渡しに違和感ないけどな

879 名前:デフォルトの名無しさん (ワッチョイ a709-leQM) mailto:sage [2017/07/21(金) 11:14:02.61.net]
設計的にどうなんだろう。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef