トップページ > 過去ログ > 記事閲覧
MFCでの利用は?
名前:ライブラリ使用者 日時: 2007/09/30 16:31

ライブラリの使い方に記載のないのを承知であえて質問させてください。 MFCのダイアログアプリケーションでのDXライブラリは利用不可なのでしょうか? スケルトンに#include "DxLib.h" 追記しただけで下記エラーが出てしまいます。 aaa.obj : error LNK2001: 外部シンボル "__chkesp" は未解決です aaaDlg.obj : error LNK2001: 外部シンボル "__chkesp" は未解決です aaa.obj : error LNK2001: 外部シンボル "_atexit" は未解決です aaa.obj : error LNK2001: 外部シンボル "___CxxFrameHandler" は未解決です aaaDlg.obj : error LNK2001: 外部シンボル "___CxxFrameHandler" は未解決です aaa.obj : error LNK2001: 外部シンボル "__except_list" は未解決です aaaDlg.obj : error LNK2001: 外部シンボル "__except_list" は未解決です LINK : error LNK2001: 外部シンボル "_WinMainCRTStartup" は未解決です Debug/aaa.exe : fatal error LNK1120: 外部参照 5 が未解決です。 link.exe の実行エラー 想定しているのは、DXライブラリのネットワーク機能を使用してチャットをしたく、サーバー機能をもたせたアプリを作成したいと思ってました。 機能は、接続者の管理・閲覧(リストビュー)、文字列の送受信のみ。画面はダイアログ1つで遷移なし。 クライアントはWin32アプリとして、作成中です。

Page: 1 |

Re: MFCでの利用は? ( No.1 )
名前:管理人 日時:2007/10/02 12:54

現在のDXライブラリではMFCとの併用は想定していませんので、 恐らく使えないと思います。(私自身試したことがありません)
Re: MFCでの利用は? ( No.2 )
名前:ライブラリ使用者 日時:2007/10/05 21:31

返事が遅れました。 CreateWindowEx()でリストビュー扱えるようなので、MFCを使用せずとも、win32アプリとして目的の機能が実装できそうです<(_ _)>
Re: MFCでの利用は? ( No.3 )
名前:ライブラリ使用者 日時:2007/10/08 22:50

 Win32でも分からなくなりました。 単純に言うと、CreateWindow()、CreateWindowEx()で、ウインドウ、リストビュー作成すると、以下ビルドエラーが出ます。 リンク中... Serve.obj : error LNK2001: 外部シンボル "__chkesp" は未解決です LINK : error LNK2001: 外部シンボル "_WinMainCRTStartup" は未解決です Debug/Server.exe : fatal error LNK1120: 外部参照 2 が未解決です。 link.exe の実行エラー DFServer.exe - エラー 3、警告 1 強引にエラー解除してみたのですが、それで実行するとCreatWindowでエラーが帰ってしまいます。 DxLibライブラリ使用で、リストビュー使うことはできないのでしょうか? 以下参考までにソースです ---------------------------------------------- // DFServe.cpp : アプリケーション用のエントリ ポイントの定義 // #include <windows.h> #include <commctrl.h> #pragma comment(lib, "comctl32.lib") //LNK2001: 外部シンボル "_WinMainCRTStartup" は未解決です //#pragma comment(linker, "/entry:\"WinMain\"") //コンパイルオプションから/GZ外し #include "DxLib.h" #define ID_LISTVIEW 100 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); BOOL InitApp(HINSTANCE); BOOL InitInstance(HINSTANCE,int); char szClassName[] = "TestServer"; HINSTANCE hInst; HWND hList; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // TODO: この位置にコードを記述してください。 MSG msg; if(!InitApp(hInstance)) return FALSE; if(!InitInstance(hInstance,nCmdShow)) return FALSE; return 0; } //ウインドウクラス登録 BOOL InitApp(HINSTANCE hInstance) { WNDCLASSEX wc; wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; //プロシージャ名 wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInst; //インスタンス wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; //メニュー名 wc.lpszClassName = (LPCSTR)szClassName; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); return (RegisterClassEx(&wc)); } BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; hInst = hInstance; hWnd = CreateWindow(szClassName, "DFServe",//タイトルバーにこの名前が表示されます WS_OVERLAPPEDWINDOW, //ウィンドウの種類 CW_USEDEFAULT, //X座標 CW_USEDEFAULT, //Y座標 640,//CW_USEDEFAULT, //幅 480,//CW_USEDEFAULT, //高さ NULL,//親ウィンドウのハンドル、親を作るときはNULL NULL,//メニューハンドル、クラスメニューを使うときはNULL hInst,//インスタンスハンドル NULL); if (!hWnd) return FALSE; //<----------ここで落ちる ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); ::MessageBox(NULL,"","",MB_OK); return TRUE; } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { LV_COLUMN lvcol; switch(msg) { case WM_CREATE: InitCommonControls(); //コモンコントロール初期化 hList = CreateWindowEx(0, WC_LISTVIEW, "", WS_CHILD | WS_VISIBLE | LVS_REPORT, 0, 0, 640, 480, hWnd, (HMENU)ID_LISTVIEW, hInst, NULL); //リストビューカラム作成 lvcol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvcol.fmt = LVCFMT_LEFT; lvcol.cx = 80; lvcol.pszText = "名前"; lvcol.iSubItem = 0; ListView_InsertColumn(hList, 0, &lvcol); lvcol.cx = 100; lvcol.pszText = "IPアドレス"; lvcol.iSubItem = 1; ListView_InsertColumn(hList, 1, &lvcol); lvcol.cx = 200; lvcol.pszText = "ホスト名"; lvcol.iSubItem = 2; ListView_InsertColumn(hList, 2, &lvcol); break; case WM_DESTROY: PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, msg, wp, lp)); } return 0; }
Re: MFCでの利用は? ( No.4 )
名前:Will 日時:2007/10/11 11:02

ソース丸コピーでやってみました。 DxLib.h 26行目の #define DX_USE_VISUALC_MEM_DEBUG のコメントアウトを外してください。 それで、最初の外部シンボルリンクエラーが出なくなります。 実行したらリストビューが表示されてOKのメッセージBOXが出ました。
Re: MFCでの利用は? ( No.5 )
名前:ライブラリ使用者 日時:2007/10/13 17:09

ありがとうございます。(返信遅れて申し訳ありません 上記の通り、コメント外すことでビルド通すことができました。また頑張ってみます、ありがとうございました。

Page: 1 |