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


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

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



1 名前:デフォルトの名無しさん [2008/05/07(水) 23:33:53 ]
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

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

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

過去スレ、関連スレなどは>>2-5辺り。


252 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 07:52:02 ]
だから板違いだっつーの。

253 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 08:17:17 ]
なんだ 同じかww

254 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 16:01:46 ]
引数のところで書かれてる__outの目的がよくわかりません。
OUTというマクロはプリプロセッサで無かったことにされてるみたいですが・・・
検索してみても、日本語で解説してあるページを見つけられませんでした。
どなたかお願いします。

255 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:02:58 ]
日本語で質問お願いします。

256 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 18:08:23 ]
エスパーすると、その引数のところに結果を返しますよ
ということをプログラマに知らせるだけの記号。

257 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 18:24:22 ]
>>254
__outは/analyzeオプション用

258 名前:デフォルトの名無しさん [2008/05/29(木) 00:35:26 ]
すみません、教えてください。

win32環境で作ったVC++プロジェクトをマネージ環境に移行するためにはどうすればいいのでしょうか。

.NET用プロジェクトを作ってソースを1つずつ移していくしかないのでしょうか?

259 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 08:43:43 ]
ctrl+a

260 名前:デフォルトの名無しさん [2008/05/29(木) 23:15:29 ]
質問です
2008VC++で、GetWindowTextWで取得したCStringをdoubleに変換したいのですが、うまくいきません
コードの書き方を教えてください



261 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:41:08 ]
どう書いて、どううまくいかなかったのか書け。

262 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:46:42 ]
GetWindowTextW→CString→doubleのどの段階でうまくいかないのだ?

CStringよりもstd::stringにしとけ


263 名前:デフォルトの名無しさん [2008/05/29(木) 23:50:39 ]
double AA,BB,CC;
CString str,AAA,BBB,CCC;

GetDlgItemText(IDC_EDIT1,AAA);
GetDlgItemText(IDC_EDIT2,BBB);

AA = atof( (const char*)AAA.GetBuffer(0));
BB = atof( (const char*)BBB.GetBuffer(0));
CC = AA + BB;
CCC.Format(_T("%f"),CC);
str = CCC +_T("が表示されます。");
SetDlgItemText(IDC_EDIT3, str);

こんな風にしたんですが、EDIT1に11.11、EDIT2に22.22を入力すると
"3.000000が表示されます。"と表示されてしまいます

264 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:56:48 ]
うにコードで(const char*)がマズイ


265 名前:デフォルトの名無しさん [2008/05/30(金) 00:07:49 ]
すみません。何度も申し訳ありません。質問させてください。

自作のdllを遅延読み込みしたいのですが、
「LNK2001: 外部シンボル xxxx は未解決です。」となってしまいます。
具体的な手順が理解できなくて、
以下の手順でやってるんですが、何か勘違い、抜けなどありますでしょうか。

@dllはexeが作成されるディレクトリに先に作成されます。
Adllの関数のプロトタイプを列挙しているヘッダファイルを、
 exe側でプロパティでパスを追加した上でincludeする。
Bリンカの「遅延読み込み」に自作のdll名を入れる
Cexe側で「LoadLibrary(dll名)」を行う
Dexe側でdll内の関数を呼び出す。

よろしくお願いします。

266 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:13:57 ]
遅延読み込みはスタティックリンク
LoadLibraryはダイナミックリンク


267 名前:デフォルトの名無しさん [2008/05/30(金) 00:35:27 ]
>>264
ありがとうございます。解決しました

268 名前:デフォルトの名無しさん [2008/05/30(金) 00:53:42 ]
>>266
ありがとうございます。
ヒントを頂き、ちょっと調べてみました。
@LoadLibraryを消す
A「追加の依存ファイル」に xxx.lib を追加
  B呼び出し側「#pragma comment」とかする必要がありそう
    ⇒"遅延読み込み"モードだからいらない???
C肝心の.libが見つからない
  ⇒それくらいはどうにか自分で解決します。。。

早めに間違い・勘違い指摘いただけましたら
すごく助かります。。。


269 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 01:26:44 ]
6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
ttp://system-trading.jp/news/index.php?ID=39
5月22日より登録受付開始、6月2日よりグランプリ開始の予定。


ttp://www.fx-gp.com/
●社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
https://www.click-sec.com/corp/guide/demo/

270 名前:デフォルトの名無しさん [2008/05/30(金) 10:47:51 ]
VC++ 2005 を利用しています。OS は XP Pro SP2 です。
次のコードを書くと、Debug ビルドでは問題なく動きますが Release ビルドでは
アプリケーションが強制終了することがあります。なぜでしょうか?

// ゼロでクリアされた構造体を用意する関数
template < typename T >
T zeroStruct() { T t; memset( & t, 0, sizeof( T ) ); return t; }

void main() {
 A a = zeroStruct< A >(); // A は構造体の型
}




271 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:17:48 ]
>>268
dllをスタティックにリンクするにはdllimportを使う。externだけじゃ呼べないよ。といってみる。
自作dllを作ったならdllexportを使ってると思うからその逆の使い方だ。

272 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:18:40 ]
またmemset()厨か。

273 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 13:20:30 ]
>>270
それだけの用途なら、そんな滓みたいなテンプレート関数作る必要なんてさらさらないじゃん。
A a = {0}で充分。

274 名前:270 mailto:sage [2008/05/30(金) 13:52:27 ]
>>273
 A a = {0} なんて書き方があったんですか。ありがとうございます。
 わざわざ関数呼ばずとも、こちらを使った方が断然良いですね。


275 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:09:04 ]
CHAR chStr[128];

wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);

wisdom.sakura.ne.jp/system/winapi/win32/win5.html
これやると

'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

っていわれるんだけど・・。なんか昔やってたソースを2008でやろうとしても同様にエラーがでる・・。
関数にcharのlong pointerの引数があったらそこに単純に"abc"ってやってもpointerわたしてるんだよね?

276 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:27:35 ]
作者じゃないから TCHAR じゃなくて CHAR を使う意図がわからない
下の方ではTCHAR 使ってるし

277 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:31:29 ]
だからそんな間違いや過去の遺物だらけのサイトで勉強しちゃダメだって。

278 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:57:13 ]
初心者には良いか悪いか分からないし(´・ω・)

279 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:43:44 ]
VC++ 2008で、windowsフォームアプリケーションのスケルトンを作成したところ、

LRESULT CALLBACK WndProc(HWND, UINT , WPARAM, LPARAM){

みたいなメインループ部分が見当たりません。
メインループさせたい場合、どのように書けばよいですか?

280 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:46:47 ]
とりあえず、.NET Frameworkについて勉強しようか。



281 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:59:23 ]
>>279
Win32アプリケーションのプロジェクトを作ればいいと思うよ。

282 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:07:50 ]
charとかLPSTRとかstrcmpとかstrcatとか_atoi_sとか
C#から入ってきたので文字列周りの処理が死ぬほどムズイ
文字列処理に特化して説明してるHPとかありませんか

283 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:12:31 ]
ソース読んでデバッガでトレースすれば理解できるよ

284 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 22:41:49 ]
lexical_castで。

285 名前:デフォルトの名無しさん [2008/05/31(土) 00:34:25 ]
VBAの処理時間短縮のためVC++でDLLを作って処理させようと思ってます。
VC++はいじったことないのでお勧めの書籍あるいはURL等ありましたら
教えて貰えませんか。

286 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 00:42:18 ]
>>285
とりあえず本屋で適当に選んできなよ

287 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 07:57:34 ]
>>282
std::stringを使えばいい

288 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 11:49:37 ]
>>279
CLR使わなきゃいい

289 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 12:33:09 ]
リソースキットツールってのは必要なの?

290 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:31:59 ]
gccの拡張機能のweakシンボルと同等のことを
VCでするにはどうすればよいでしょうか?



291 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 19:13:16 ]
2008なんですがコマンドラインからの引数を受け取って
動作をデバッグするにはどうしたらいいんでしょう?
具体的には

int main( int argc, char** argv ){

の引数をいろいろ変えながらデバッグしたいんですが・・・。

292 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 19:16:26 ]
と、思ったんですが、すごい勢いで解決しました。
すごいよMSDNむすどんむすどん。

293 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 20:01:16 ]
Thumb.dbのフォーマットを解説してるサイトとかって存在しますか?

294 名前:デフォルトの名無しさん [2008/06/01(日) 23:59:57 ]
VC++ 2005 でsprintfを使うと警告が出るのですが。
sprintf(msg1,"%d:%s",no,str);
警告 1 warning C4996: 'sprintf' が古い形式として宣言されました。 c:\_将棋\fj-sai\fai001\fai001\メッセージ送信1.cpp 33
この警告を出さなくする方法ありませんか?

295 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:07:29 ]
日本語ファイル名かよw

296 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:14:43 ]
>>294
#pragmaで抑制できたはず。
詳しくはググれ。

297 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:15:09 ]
>>294
sprintfを使わずに、boost::formatを使う。

298 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:21:24 ]
>>296
出来ました.ありがとうございます。
>>297
調べてみます。ありがとうございました。

299 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:42:52 ]
>>291

300 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:47:04 ]
>>291

メニュー[プロジェクト] -> プロパティ -> デバッグ -> コマンド引数

を変更すればおkなはず。

面倒なときはイリーガルだけど、

#ifdef DEBUG
char* argv_[2] = { "application", "" };

argc = 2;
argv = argv_;
#endif

みたいにでばっぐしてみればどう?





301 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 06:42:55 ]
>>292

302 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 07:12:08 ]
>>299
できるよ。
以上。
はい、次。

303 名前:MFC始めて2日目 [2008/06/02(月) 10:42:54 ]
ファイルの読み込みをやろうとして
void CDeepPurpleDoc::Serialize(CArchive& ar)
{
CString ss;
// CEditView は、すべてのシリアル化を処理するエディット コントロールを含んでいます。
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);

if(ar.IsStoring())
{
ar << ss;
}
else
{
ar >> ss;
}
}
既存のテキストファイルを開こうとしたら
予期しないファイル形式
というエラーが出た。
シリアライズってなんだ?

304 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 11:12:43 ]
ttp://www.vipper.org/vip833994.jpg
VC++2008で、BとCの下のスピンボタンの値を足し算して、Aの下の部分に表示したいんですが
どのように記述すれば値を取得して計算・表示できるのでしょうか?

305 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 12:21:03 ]
スピンボタンの値を取得するサンプルならそこらじゅうにあるだろ

306 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:37:34 ]
>>304
Bの下、Cの下、それぞれのスピンボタンの値を取得し、それらを加算してから文字列に変換し、
Aの下に直接書き込むか或いはAの下に配置したスタティックテキストを書き換えれば宜しい。

307 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:37:05 ]
シリアライズってのは、「専用形式」で「なるべく簡単に」
オブジェクトを保存・読み込みする、みたいなコンセプト。
そこいらにあるファイルをデシリアライズするのは大変。

308 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:28:04 ]
>>271
遅くなりましたが、今、無事できました!
コンパイルもリンクもうまくいき、
ちゃんとdll内の関数も呼び出せました!
本当に、ありがとうございました。

309 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 21:41:31 ]
CStringってすごいな。これを使えば2バイト文字の扱いが楽だな。
これはMFCなのか、ATLなのか。

310 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 00:57:20 ]
今は共用になってる



311 名前:MFC始めて3日目 [2008/06/04(水) 14:32:28 ]
void CDeepPurpleDoc::Serialize(CArchive& ar)
{
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);

BYTE* pByteBuff;
CEditView* pEditView = ((CEditView*)m_viewList.GetHead());

if(ar.IsStoring())
{
CFile* pFile = ar.GetFile();
UINT size = (pEditView->GetEditCtrl()).GetWindowTextLengthA();
pByteBuff = new BYTE[size + 1];
UINT len = (pEditView->GetEditCtrl()).GetWindowTextA((LPTSTR)pByteBuff,size + 1);
pByteBuff[len] = 0;
pFile->Write(pByteBuff,len);
}
else
{

}
delete pByteBuff;
}
とやってファイルに書き込むと2回書き込まれる。
MFCがなにかやってるのか。


312 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 14:42:10 ]
SerializeRaw したあと同じものを自分でも書いてんの?

313 名前:MFC始めて3日目 [2008/06/04(水) 15:07:56 ]
SerializeRawの1行を削除したらエラーになった。
(ソースコードの else の行に矢印がついてプログラムがストップ)

314 名前:MFC始めて3日目 [2008/06/04(水) 15:16:44 ]
うまくいった。
(313 はデバッグの機能が働いただけだった)

>>307
>>312
ありがとう。

315 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:30:51 ]
VC++使い始めて間もないのですが、質問させてください

現在MSVC++2005ProのMFCを用いてソフトを作ろうと考えております
一次元での温度分布をグラフィック表示するものを作ろうと考えていて
物体の二点の温度を入力した際に、その間を一次関数的に温度が増減すると仮定した上で
その温度分布をモノクロの色の濃さで表現するようなものを作りたいと思っています

このようなグラデーション表示を描画するためにはどのようにすればよいのでしょうか?
よろしくお願いいたします。

316 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:58:18 ]
static void CALLBACK TimerProc(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2){}
の中で、同クラス内のフィールドを参照したい場合どうすればいいの?
ふつーに参照しようとすると、
関数呼び出しには引数リストがありません。
って言われるんだけど・・・

317 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:57:54 ]
非staticメンバにアクセスしたいなら、クラスのインスタンスをどうにかして得る。

318 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:17:41 ]
そのためのDWORD dw1とDWORD dw2

319 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:01:21 ]
使用環境VC++2008 Expressで、win32コンソールアプリケーションのプロジェクトです
下記のコードをビルドして実行すると点数の表示が-184563みたいに変な数字になってしまいます
どうすればちゃんとしたのを作れるでしょうか?
Visual Studio 2008 コマンドプロンプトからコンパイルすれば思ったとおりの結果になります
#include<stdio.h>

int main(void)
{
int score;
printf("点数を入力してください:");
scanf_s("%d",&score);
if (score > 100) score = 100;
printf("あなたの点数は %d 点です。");
return 0;
}

320 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:18:11 ]
printf("あなたの点数は %d 点です。",score);




321 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:58:10 ]
>>320
できました
ありがとうございます

322 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 23:10:32 ]
C言語なら俺に聞け(入門篇) Part 29
pc11.2ch.net/test/read.cgi/tech/1212329099/

323 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:29:24 ]
>>317 どうやるの?

324 名前:デフォルトの名無しさん [2008/06/05(木) 20:28:29 ]
CStringってATLでも使えるようになったんだ
MFCじゃなくてもOkになってたとは

325 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:41:55 ]
>>323
CALLBACK関数には、クッキーと呼ばれる自由に使っていいパラメータが用意されている場合が多い。そこにインスタンスのポインタを乗せて渡したりする。



326 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:13:37 ]
textBoxに内部処理で得たchar型の2次元配列を表示させるにはどうしたらよいのでしょうか?

textbox->text = 配列変数名

だと型がcharをstringにできないとコンパイルエラーが出てしまいます。
環境は.Net2008です。
よろしくお願いします。

327 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:19:44 ]
>>326
どんな風に出したいのか詳細に決めたら、一気にプログラムを書く

328 名前:326 mailto:sage [2008/06/05(木) 22:42:30 ]
今思いついたんですけど、
ループで1文字ずつstring型変数に入れて文字列にしてからtextBoxに
入れるしかないんですかね?

329 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:56:16 ]
整形しなくてよければまとめて出せるだろ
文字列だって配列なんだし

330 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:58:38 ]
そもそもなんで二次元配列なんだよ



331 名前:326 mailto:sage [2008/06/06(金) 01:07:32 ]
読み込むデータが最大64個で
4ビット区切りの16進数が12個並んでるからです。
EE000FF00002みたいな。

それをテキストボックスに1行ごとに表示させたいんです。

332 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:02:58 ]
VC++っていうよりも、C/C++の話なのかもですが。

自作のクラスを.cpp/.hで作って、
それらのファイルをプロジェクトには追加せずに、
.hをインクルードするだけで使うことはできませんか?

イメージは、stdio.hをインクルードしてprintfを使う、みたいな感じで。

ツール→オプション→VC++ディレクトリ、でパスは通してあります。

宜しくお願いします。

333 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:09:07 ]
ライブラリにする

334 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 06:28:07 ]
全部hに書けばいいじゃんw

335 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 07:39:01 ]
www.auction.co.jp/mem1/item/mem_itm_item.asp?LOT=1138644

336 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 09:29:31 ]
>>332
printfと同じようにするなら>>333のいうとおりライブラリにする
ついでに、pragmaいれとけばlibのファイル名指定はいらなくなる
適切な場所にlibをおく必要はあるが。

337 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 09:38:52 ]
VC++で作ったexeファイルをネットワークドライブに置き、
繋いである他PCから起動するとエラーが発生します。
HDDにコピーせず直接起動させるのにはどうしたら良いでしょうか?
パソコン自体に設定するのではなく、ファイル自体に設定したいので
よろしくお願いします。


エラー内容
問題が発生したため、.exeを終了します。
ご不便をおかけして申し訳ありません。

338 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 11:12:33 ]
deki.psv.org/JoyToKey.htm
みたいなツールを作ろうと思い、keybd_eventでキーイベントを発生させてみたのですが、
MHFでキーイベントを認識してくれません.(JoyToKeyは認識する.)
どうすればよいでしょうか?

339 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 11:22:08 ]
ここって何でも相談室だっけ?

340 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:54:47 ]
>>333
>>336
ありがとうございます。
やっぱりライブラリにするべきなんですね。

なるべくならライブラリにはしたくなかったんですが、
とりあえずその線で行くことにします。



341 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 18:35:45 ]
>>339
答えられるものだけ答える側が判断して答えればおkなんじゃないの?

342 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 19:07:01 ]
遠まわしにスレ違いを指摘してやってるだけだろ

343 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 19:21:30 ]
MinGWにて作成したDLLをVC++にて呼び出そうと下記のようなソースをコーディングしました。
DLL作成側で生成したポインタのハンドラを呼び出し側に渡そうと
引数にて受け渡ししようとしていますが、
呼び出し側で確認をすると、ハンドラの値は0のままです。
DLL連携をすると引数受け渡しは不可能なのでしょうか?

■DLL作成側(MinGW)
●cpp
extern "C" __declspec(dllexport) int __stdcall GeoOpen(char* chrLicence, char* chrGeoDBDir, char* chrNormalize, long* lngHandler) {
Geo *geo = new Geo();
lngHandler = (long*)geo;
return 1;
}

■DLL呼び出し側(VC++)
●h
typedef int (__stdcall *GEOOPEN)(char*, char*, char*, long*);
●cpp
GEOOPEN geoOpen = (GEOOPEN)GetProcAddress(hGEOCODERDLL, "GeoOpen@16");
long* lngHandler;
if (geoOpen != NULL) {
int intRes = (*geoOpen)(chrLicence, chrGeoDBDir, chrNormalize, lngHandler);
}

344 名前:デフォルトの名無しさん [2008/06/06(金) 19:59:22 ]
そもそもDLL側で作成したポインタのハンドラ貰っても
またDLLに渡す頃には消失されてる・・・のかな?


345 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:05:56 ]
>>343
int型の値を引数で返すには、引数をint*やint&にするだろ。
それと同じで、long*型の値を引数で返すには、long**やlong*&にしないといけない。

346 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:41:03 ]
>>340
プロジェクトに属するcppファイル内で使用したいcppをインクルードするという方法を
ときどき使ってる。

347 名前:346 mailto:sage [2008/06/06(金) 20:42:35 ]
プロジェクトに属するcppファイル内で、
使用したいcppをインクルードするという方法をときどき使ってる。

// CppIncluder.cpp
#include "included.cpp"

348 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 08:20:23 ]
>340
DOS時代はコンパイルだけしといて
バッチファイル内のリンカのコマンドラインにobjファイル追加してた。

今はVCなのでプロジェクトに追加するだけ。

349 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:02:41 ]
まあそのうちprintfがどこに入ってるかを知ることになるだろう

350 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:36:34 ]
Visual Studio 使ってる場合で、ちょっとした言語仕様とか
確認するために簡単なプログラムを書いて試したい時、
どうしてますか?



351 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:58:15 ]
コマンドラインから cl してるな。俺は。

352 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:06:16 ]
テスト用に使ってるプロジェクトがある






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

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

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