[gogo.dll] DLL の利用

  午後のこ〜だで、 wav --> mp3



  
#include "stdafx.h"


typedef	signed int		MERET;
typedef	unsigned long		MPARAM;
typedef	unsigned long		UPARAM;

typedef MERET (*LPFUNC_NOPARAM)( void );
typedef MERET (*LPFUNC_1)( MPARAM mode, UPARAM dwPara1, UPARAM dwPara2 );
typedef MERET (*LPFUNC_2)( MPARAM mode, void *para1 );

#define	ME_NOERR				(0)
#define	MC_INPUTFILE				(1)
#define	MC_INPDEV_FILE			(0)

#define	MG_COUNT_FRAME			(15)

#define	ME_EMPTYSTREAM			(1)

static	LPFUNC_NOPARAM	MPGE_initializeWork;
static	LPFUNC_NOPARAM	MPGE_endCoder;
static	LPFUNC_NOPARAM	MPGE_detectConfigure;
static	LPFUNC_NOPARAM	MPGE_processFrame;
static	LPFUNC_NOPARAM	MPGE_closeCoder;
static	LPFUNC_1		MPGE_setConfigure;
static	LPFUNC_2		MPGE_getConfigure;

int main(int argc, char* argv[])
{
	if ( argc == 1 ) {
		printf( "%s\n", "ファイル名が指定されていません" );
		return 1;
	}

	HINSTANCE		lib;

	lib = LoadLibrary( "gogo.dll" );
	if ( lib == NULL ) {
		printf( "%s\n", "gogo.dllのロードに失敗しました");
		return 1;
	}

	MPGE_initializeWork = (LPFUNC_NOPARAM)GetProcAddress( lib, "MPGE_initializeWork" );
	if ( MPGE_initializeWork == NULL ) {
		FreeLibrary( lib );
		printf( "%s\n", "MPGE_initializeWork のアドレスの取得に失敗しました");
		return 1;
	}
	MPGE_endCoder = (LPFUNC_NOPARAM)GetProcAddress( lib, "MPGE_endCoder" );
	if ( MPGE_endCoder == NULL ) {
		FreeLibrary( lib );
		printf( "%s\n", "MPGE_endCoder のアドレスの取得に失敗しました");
		return 1;
	}
	MPGE_detectConfigure = (LPFUNC_NOPARAM)GetProcAddress( lib, "MPGE_detectConfigure" );
	if ( MPGE_detectConfigure == NULL ) {
		FreeLibrary( lib );
		printf( "%s\n", "MPGE_detectConfigure のアドレスの取得に失敗しました");
		return 1;
	}
	MPGE_processFrame = (LPFUNC_NOPARAM)GetProcAddress( lib, "MPGE_processFrame" );
	if ( MPGE_processFrame == NULL ) {
		FreeLibrary( lib );
		printf( "%s\n", "MPGE_processFrame のアドレスの取得に失敗しました");
		return 1;
	}
	MPGE_closeCoder = (LPFUNC_NOPARAM)GetProcAddress( lib, "MPGE_closeCoder" );
	if ( MPGE_closeCoder == NULL ) {
		FreeLibrary( lib );
		printf( "%s\n", "MPGE_closeCoder のアドレスの取得に失敗しました");
		return 1;
	}
	
	MPGE_setConfigure = (LPFUNC_1)GetProcAddress( lib, "MPGE_setConfigure" );
	if ( MPGE_setConfigure == NULL ) {
		FreeLibrary( lib );
		printf( "%s\n", "MPGE_setConfigure のアドレスの取得に失敗しました");
		return 1;
	}
	MPGE_getConfigure = (LPFUNC_2)GetProcAddress( lib, "MPGE_getConfigure" );
	if ( MPGE_getConfigure == NULL ) {
		FreeLibrary( lib );
		printf( "%s\n", "MPGE_getConfigure のアドレスの取得に失敗しました");
		return 1;
	}

	MERET	ret;

	// 初期化
	ret = MPGE_initializeWork();
	if ( ret ) {
		FreeLibrary( lib );
		printf( "%s\n", "MPGE_initializeWork による初期化に失敗しました");
		return 1;
	}

	// 初期設定
	MPGE_setConfigure( MC_INPUTFILE, MC_INPDEV_FILE, (UPARAM)argv[1] );
	ret = MPGE_detectConfigure();
	if ( ret == ME_NOERR ) {

		// 処理
		UPARAM	nFrame, nCnt;

		MPGE_getConfigure( MG_COUNT_FRAME, (UPARAM*)&nFrame );
		printf( "フレーム数は %ld です\n", nFrame );

		nCnt = 1;
		ret = MPGE_processFrame();
		while( ret == ME_NOERR ) {
			ret = MPGE_processFrame();
			nCnt = nCnt + 1;
		}
		if( ret != ME_EMPTYSTREAM ){
			printf("エラーが発生しました errcode = %d : frame = %d\n", ret, nCnt );
		}
	}
	else {
		printf( "%s\n", "MPGE_detectConfigure による解析エラーが発生しました");
	}

	// 終了処理
	MPGE_closeCoder();
	MPGE_endCoder();
	FreeLibrary( lib );
	
	return 0;
}

  



  関数マクロを使用してシンプルにする



  
#include "stdafx.h"


typedef	signed int	MERET;
typedef	unsigned long	MPARAM;
typedef	unsigned long	UPARAM;

typedef MERET (*LPFUNC_NOPARAM)( void );
typedef MERET (*LPFUNC_1)( MPARAM mode, UPARAM dwPara1, UPARAM dwPara2 );
typedef MERET (*LPFUNC_2)( MPARAM mode, void *para1 );

#define	ME_NOERR				(0)
#define	MC_INPUTFILE			(1)
#define	MC_INPDEV_FILE			(0)
#define	MG_COUNT_FRAME			(15)
#define	ME_EMPTYSTREAM			(1)

static	LPFUNC_NOPARAM	MPGE_initializeWork;
static	LPFUNC_NOPARAM	MPGE_endCoder;
static	LPFUNC_NOPARAM	MPGE_detectConfigure;
static	LPFUNC_NOPARAM	MPGE_processFrame;
static	LPFUNC_NOPARAM	MPGE_closeCoder;
static	LPFUNC_1		MPGE_setConfigure;
static	LPFUNC_2		MPGE_getConfigure;

#define SetProc(ProcName,Type) \
	ProcName		= (Type)GetProcAddress( lib, #ProcName ); \
	if ( ProcName == NULL ) { \
		FreeLibrary( lib );	\
		printf( "%s %s\n", #ProcName, "のアドレスの取得に失敗しました"); \
		return 1; \
	}

int main(int argc, char* argv[])
{
	if ( argc == 1 ) {
		printf( "%s\n", "ファイル名が指定されていません" );
		return 1;
	}

	HINSTANCE		lib;

	lib = LoadLibrary( "gogo.dll" );
	if ( lib == NULL ) {
		printf( "%s\n", "gogo.dllのロードに失敗しました");
		return 1;
	}

	SetProc(MPGE_initializeWork,LPFUNC_NOPARAM)
	SetProc(MPGE_endCoder,LPFUNC_NOPARAM)
	SetProc(MPGE_detectConfigure,LPFUNC_NOPARAM)
	SetProc(MPGE_processFrame,LPFUNC_NOPARAM)
	SetProc(MPGE_closeCoder,LPFUNC_NOPARAM)
	SetProc(MPGE_setConfigure,LPFUNC_1)
	SetProc(MPGE_getConfigure,LPFUNC_2)

	MERET	ret;

	// 初期化
	ret = MPGE_initializeWork();
	if ( ret ) {
		FreeLibrary( lib );
		printf( "%s\n", "MPGE_initializeWork による初期化に失敗しました");
		return 1;
	}

	// 初期設定
	MPGE_setConfigure( MC_INPUTFILE, MC_INPDEV_FILE, (UPARAM)argv[1] );
	ret = MPGE_detectConfigure();
	if ( ret == ME_NOERR ) {

		// 処理
		UPARAM	nFrame, nCnt;

		MPGE_getConfigure( MG_COUNT_FRAME, (UPARAM*)&nFrame );
		printf( "フレーム数は %ld です\n", nFrame );

		nCnt = 1;
		ret = MPGE_processFrame();
		while( ret == ME_NOERR ) {
			ret = MPGE_processFrame();
			nCnt = nCnt + 1;
		}
		if( ret != ME_EMPTYSTREAM ){
			printf("エラーが発生しました errcode = %d : frame = %d\n", ret, nCnt );
		}
	}
	else {
		printf( "%s\n", "MPGE_detectConfigure による解析エラーが発生しました");
	}

	// 終了処理
	MPGE_closeCoder();
	MPGE_endCoder();
	FreeLibrary( lib );
	
	return 0;
}

  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ