トップページ⇒tech
63コメント15KB

ライブラリマニア【パッケージ化】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/03/06(土) 15:01:14
思いついたらすぐパッケージ化、ライブラリ化する人
他人の作ったライブラリやモジュールを集める人

そんな人たちの交差点
リクもおk(礼儀は正しく)

因みに>>1はC++では前者です
0002デフォルトの名無しさん2010/03/06(土) 15:45:03
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0003デフォルトの名無しさん2010/03/06(土) 16:48:01
Linux板でやれ
0004デフォルトの名無しさん2010/03/06(土) 17:25:48
じゃあ早速
動画や音楽ファイルのアーティスト情報をget_file_info(filename)見たいな感じで表示するコードください
0005デフォルトの名無しさん2010/03/07(日) 11:07:13
ネタ振っといて例を出さないとかやる気ないな
0006デフォルトの名無しさん2010/03/07(日) 11:37:11
だれかが代わりに探してあげるスレじゃまいか?
0007デフォルトの名無しさん2010/03/07(日) 19:55:42
言われてもそんなすぐ出来るわけないでしょう
マターリやりましょうよ
0008デフォルトの名無しさん2010/03/07(日) 20:51:07
試しに晒してみる
自作アプリで使ってるクリップボード関数

BOOL ClipCopy(void* Source, DWORD dwSize, DWORD CFType)
{
BOOL Result;
HGLOBAL HG;
LPVOID lpV;
if(Source == NULL)
return FALSE;
if(dwSize == 0)
return FALSE;
HG = ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwSize);
lpV = ::GlobalLock(HG);
::CopyMemory(lpV, Source, dwSize);
::GlobalUnlock(HG);
if(::OpenClipboard(NULL))
{
::EmptyClipboard();
::SetClipboardData(CFType, HG);
::CloseClipboard();
Result = TRUE;
}
else
{
::GlobalFree(HG);
Result = FALSE;
}
return Result;
}
0009デフォルトの名無しさん2010/03/07(日) 20:59:36
十年くらい前はCでそんな感じのよく作ってたなぁ
.NET使うようになってからどうでもよくなったがw
0010デフォルトの名無しさん2010/03/07(日) 21:38:58
Windowをクラス化しようとしてコールバックにメンバ関数渡せない
→static関数を渡せ
→インスタンスを渡したい
 →SetWindowLongPtr使え
 →サンク使え
0011デフォルトの名無しさん2010/03/07(日) 23:24:40
>>4
FFmpegあたりが参考になるかも
0012デフォルトの名無しさん2010/03/07(日) 23:35:57
>SetWindowLongPtr使え
thisポインタが必要だから無理
MFCでは全てのメッセージはグローバルのコールバックに届いて
クラスとハンドルの対応表を参照してメンバ関数を呼び出してる
MFC方式でいいんじゃない
0013デフォルトの名無しさん2010/03/08(月) 11:51:19
それは誰かが、メンバ関数の表のようなものを
つくらないと若しくはじぶんで自作って可能なのかそれは…
用途によるか�d
0014デフォルトの名無しさん2010/03/08(月) 16:13:14
春休みなんでC言語でさくっとソフト作りたい
何かボタンとか付けるだけで実用的になるライブラリーみたいな物知らない?
0015デフォルトの名無しさん2010/03/08(月) 18:31:58
.NETFramework
0016デフォルトの名無しさん2010/03/08(月) 19:09:08
C++/CLI
0017デフォルトの名無しさん2010/03/08(月) 22:34:23
>>12
SetWindowLongPtrでthisを突っ込むんだよ
0018デフォルトの名無しさん2010/03/09(火) 16:08:59
SetWindowLongPtrって64bitOS対応なのか、ずっとSetWindowLong使ってたわw
0019デフォルトの名無しさん2010/03/09(火) 16:10:21
てか、SetWindowLongPtrでthis突っ込む方式の何が駄目なのだろうかage
0020デフォルトの名無しさん2010/03/09(火) 16:26:33
>>17
DWLP_USERに入れればいいのか?
GetWindowLongPtr( hWnd, DWLP_USER )->foo( uMsg, wParam, lParam )
みたいな感じ?
でも結局グローバルなコールバック関数が必要なような
0021デフォルトの名無しさん2010/03/09(火) 16:34:49
こんな感じで

LRESULT Window::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
// メンバに自由にアクセス
}

static LRESULT CALLBACK Window::InnerWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
Window* win = (Window*)::GetWindowLong(hWnd, GWL_USERDATA); // SetWindowLongバージョンで許して
if (win) {
ret = win->WndProc(hWnd, uMsg, wParam, lParam);
} else {
ret = ::DefWindowProc(hWnd, uMsg, wParam, lParam);
}
}
0022デフォルトの名無しさん2010/03/09(火) 16:35:42
あ〜、もう

LRESULT Window::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  // メンバに自由にアクセス
}

static LRESULT CALLBACK Window::InnerWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  Window* win = (Window*)::GetWindowLong(hWnd, GWL_USERDATA);
  if (win) {
    ret = win->WndProc(hWnd, uMsg, wParam, lParam);
  } else {
    ret = ::DefWindowProc(hWnd, uMsg, wParam, lParam);
  }
}
0023デフォルトの名無しさん2010/03/09(火) 21:21:18
>>22
結局staticだしMFCでいいや
0024デフォルトの名無しさん2010/03/09(火) 21:26:29
WTLのソースでもよめよ
0025デフォルトの名無しさん2010/03/09(火) 23:27:26
>サンク使え
0026デフォルトの名無しさん2010/03/11(木) 17:29:02
サンク方式→アセンブラで書くので移植の問題を考慮する必要がある
MFC方式→クラスやインスタンスが増えた場合、テーブルから引き出す速度が遅くなる。
0027デフォルトの名無しさん2010/03/11(木) 17:59:52
>>22
クソをソースにしたようなもんだな
0028デフォルトの名無しさん2010/03/11(木) 20:40:48
他にいいやり方があるならどうぞ
0029デフォルトの名無しさん2010/03/11(木) 21:46:26
ライブラリがGWL_USERDATA使ってると
そのライブラリ使うユーザーが同じことできないから困る
0030デフォルトの名無しさん2010/03/12(金) 06:58:23
CreateWindow(Ex)の最後の引数が代替できる
0031デフォルトの名無しさん2010/03/12(金) 18:20:36
10年前にタイムスリップしたようなスレだな
0032デフォルトの名無しさん2010/03/12(金) 18:36:30
ドットネットの今こそ需要があるんだろうよ。
0033デフォルトの名無しさん2010/03/13(土) 18:40:48
VisualC++でゲーム用スタティックライブラリ作ってるんですけど
1ライブラリにつき、全てのヘッダをincludeしたヘッダをひとつ用意して
これを使う設計なんですけど、これってコンパイル速度にペナルティあったりしますか?
使わないヘッダまでincludeされちゃうんで無駄があるかなぁと思ってるんですが
0034デフォルトの名無しさん2010/03/13(土) 20:39:22
>28-30
RegisterClassExでウィンドウクラスを作ればいいだけじゃん
名前の衝突も考えないといけなくなるけど
0035デフォルトの名無しさん2010/03/13(土) 21:41:42
ここにいるやつらでライブラリ寄せ集めて新.NETなんてどう?
まぁこんな低能じゃ無理か
0036デフォルトの名無しさん2010/03/13(土) 21:59:51
FCLの事言ってるのかCLRを自作の事いってんのかわからんが、
たぶん何もわかってなくて言ってるんだろうな
0037デフォルトの名無しさん2010/03/15(月) 03:51:45
>>33
勿論、コンパイラはincludeされたファイルは全部解析するからその分は遅くなる。
だが恐らくは気になるほど遅くはならないだろう。
0038デフォルトの名無しさん2010/03/15(月) 21:54:54
#pragma once
0039デフォルトの名無しさん2010/03/20(土) 18:17:39
ところで個人が作成したもので一番普及してるコードってなんだろう?
libjpegとか?
0040デフォルトの名無しさん2010/03/20(土) 18:28:22
zlibとか?
0041デフォルトの名無しさん2010/03/22(月) 06:58:32
libcだろ
最初はRMSと数人で書いたんでしょ
0042デフォルトの名無しさん2010/04/25(日) 03:33:52
関係ないかもしれんけどgoogle日本語入力を外部アプリから利用できないかなと思った
ゲームとかのグラフィカルなインターフェイスでスマートに漢字を入力みたいな
0043デフォルトの名無しさん2010/04/30(金) 00:39:51
MFCのCHtmlViewにFirefoxとIEのエンジンを切り替えて使えるラッパーを探していますが誰か知りませんか?
0044デフォルトの名無しさん2010/05/03(月) 11:04:43
.lib化すると、他に必要だった.dllとかが要らなくなるの?
0045デフォルトの名無しさん2010/05/07(金) 19:23:17
MFCを使うと実行モジュールのサイズが100倍に!?
0046デフォルトの名無しさん2010/05/21(金) 22:42:56
嘘つくなよ
フリーソフト作るときmfc入ってないやつのためにスタティックリンクすることあるけどせいぜい3倍程度だし
0047デフォルトの名無しさん2010/05/22(土) 03:06:30
http://www.dotup.org/uploda/www.dotup.org903461.gif
0048デフォルトの名無しさん2010/06/05(土) 21:33:35
ARM版WinCE用のlibjpegのdllってどこにありますか?
0049デフォルトの名無しさん2010/08/05(木) 15:47:33
OpenJaneのレス表示部分のような機能のあるパッケージキボンヌ
0050デフォルトの名無しさん2010/08/11(水) 18:45:28
>>48
それくらい自分で組めよ
>>49
専用のパッケージなんか探さなくても.net使えばhtmlの表示とかが楽
そのほうが応用が利くし
あとは適当に本文から>>%uでも検索すればよろし
0051デフォルトの名無しさん2010/11/16(火) 14:58:41
mpegファイルを作成するライブラリはありまつか?
0052デフォルトの名無しさん2010/11/16(火) 15:48:07
スレ見つけた記念。Winのクリップボード消去関数。
あなたにセキュリティ〜!!

bool EraseClipBoard(HWND hWnd,bool IsShowError = true){
    if(OpenClipboard(hWnd) == FALSE){
        if(IsShowError == true) MessageBox(NULL,TEXT("クリップボードを開けません!!"),TEXT("Error!!"),MB_OK|MB_ICONWARNING);
        return false;
    }
    if(EmptyClipboard() == FALSE){
        if(IsShowError == true) MessageBox(NULL,TEXT("クリップボードの消去に失敗しました!!"),TEXT("Error!!"),MB_OK|MB_ICONWARNING);
        CloseClipboard();
        return false;
    }
    CloseClipboard();
    return true;
}
0053デフォルトの名無しさん2010/11/22(月) 19:48:55
あとはこことか
http://studiokingyo.fc2web.com/
0054デフォルトの名無しさん2010/11/22(月) 20:24:06
宣伝乙。最近大売出しだな。
0055デフォルトの名無しさん2010/11/22(月) 20:26:51
>>53
あんまり何回もしつこく貼るとここに通報するよ

ものすごい勢いで広告・宣伝を報告するスレ 195
http://qb5.2ch.net/test/read.cgi/sec2chd/1289529408/
0056デフォルトの名無しさん2010/11/23(火) 00:02:59
宣伝、というか本人なのか?
もうこいつまともにプログラミングやってないんだろ?
結構前から時代錯誤な書き込みをしてるし。
いつからこの人はこんなに錆ついちゃったのか
0057デフォルトの名無しさん2011/02/18(金) 04:22:19
libpng-1.5.1がコンパイルできない
0058デフォルトの名無しさん2011/02/18(金) 04:25:38
先にZlibビルドしないといけないような気がする。大分前にやったからわすれた。
0059デフォルトの名無しさん2011/02/18(金) 04:26:41
と思ったらバージョン間違えた。わすれてくれー。すまぬー。
0060デフォルトの名無しさん2011/02/18(金) 04:29:42
1.5.1限定です、1.4.5までなら簡単にコンパイルできるんだけど1.5.1はなんかおかしい…
0061デフォルトの名無しさん2011/07/09(土) 09:12:31.88
アプリケーションを作る時は、そのアプリケーションで使用するライブラリを書くつもりで
プログラムを書けと、誰かが言っていたな
0062デフォルトの名無しさん2011/07/16(土) 14:14:26.38
欲しい機能を全部実装できてるのに数年経つと使い方忘れてて組み直した方が早い
0063デフォルトの名無しさん2011/07/16(土) 21:58:03.15
俺は3日でそうなる
■ このスレッドは過去ログ倉庫に格納されています