waiei -blog-

その日の出来事を簡単に紹介する日記

C++に詳しい人ーっ

2007-05-13-Sun-13:33
どうもこんにちは。
C++に詳しい人、ちょっとばかし教えていただきたいことがあるのですががが。

いま、C++でソフトを作ってみようなことになってるんですけど
とよしまハウスさんのT'Sound Systemを使おうかと思うんですよ。
DLLデータ等はここにあります
で、何がわからないのかというと

これ、どうやったら命令軍使えるようになるのでしょうか

あ、ちょ、医師投げないでー!初歩的すぎだろとか言わないでーっ!!

(以下、記事が横に伸びたので下のリンクをクリックして表示させてください
また、既にこの問題は解決しました。)

一応、BCC Developerで試してみたんですが

//---- main.cpp
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include "tsgl.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM InitApp(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);

char szClassName[] = "winclass"; //ウインドウクラス

int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
LPSTR lpsCmdLine, int nCmdShow)
{

<中略>


// ウインドウの生成
BOOL InitInstance(HINSTANCE hInst, int nCmdShow)
{
HWND hWnd;

hWnd = CreateWindow(szClassName,
"ウインドウタイトル",//タイトルバー
WS_OVERLAPPEDWINDOW,//ウインドウの種類
CW_USEDEFAULT,//X座標
CW_USEDEFAULT,//Y座標
640,//Xサイズ
480,//Xサイズ
NULL,//新ウインドウハンドル(親はNULL)
NULL,//メニューハンドル(クラスメニューを使うときはNULL)
hInst,//インスタンスハンドル
NULL);

if (!hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}

//ウインドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg) {
case WM_CREATE:
TSGL_Init(hWnd);
TSGL_PlayMusic("r.tss");
break;
case WM_DESTROY:
TSGL_Trash();
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, msg, wp, lp));
}
return 0;
}


プロジェクト設定はウインドウズアプリケーションにしていて、
implibでBCC用に変換したNPTSS.libをリンクしていて、
リソースのインクルードパスにもDLL等入ったフォルダを選択しているのですが


MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
bcc32 -W -3 -O2 -w- -AT -pc -H- -k -b -eRelease\tsstest.exe Release\tsstest.obj C:\borland\bcc55\Lib\TSS\NPTSS.lib
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_TSGL_Init' が未解決(C:\DATA\C\TSSTEST\RELEASE\TSSTEST.OBJ が参照)
Error: 外部シンボル '_TSGL_PlayMusic' が未解決(C:\DATA\C\TSSTEST\RELEASE\TSSTEST.OBJ が参照)
Error: 外部シンボル '_TSGL_Trash' が未解決(C:\DATA\C\TSSTEST\RELEASE\TSSTEST.OBJ が参照)

/(^O^)\


で、BCCだとダメなのかと思いVisualC++ 2005 Express Editionを落としてきて

ソースファイル main.cpp(上のと同じ)
ヘッダファイル tsgl.h

にしてビルドって見ると


------ ビルド開始: プロジェクト: tsstest, 構成: Debug Win32 ------
リンクしています...
main.obj : error LNK2019: 未解決の外部シンボル "void __cdecl TSGL_Trash(void)" (?TSGL_Trash@@YAXXZ) が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
main.obj : error LNK2019: 未解決の外部シンボル "void __cdecl TSGL_PlayMusic(char *)" (?TSGL_PlayMusic@@YAXPAD@Z) が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
main.obj : error LNK2019: 未解決の外部シンボル "void __cdecl TSGL_Init(struct HWND__ *)" (?TSGL_Init@@YAXPAUHWND__@@@Z) が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
C:\data\vc\tsstest\Debug\tsstest.exe : fatal error LNK1120: 外部参照 3 が未解決です。

\(^O^)/

昨日の夜からかれこれ7時間近く原因探してるんだけど全然わかんねーorz
そもそもTSS使ってプログラム組んでる人自体ほとんどいないから
参考に出来るものもねーorz

ようは命令としてちゃんと定義されていないぞってことなんだろうけど
どうすりゃ定義されるんディスカーっ!!

ちなみに同時にDXライブラリも使う予定なんですががが
こっちは説明書通りにやったらちゃんと動くんですよねー。

ソースとデータファイルはここに置いておきますんで
わかりそうだという人は是非教えてくだされーorz


とりあえず、tssファイルが再生できたらそれでいいです><


---追記
横オーバーしすぎてワロタ
HOME