forums.ps2dev.org Forum Index forums.ps2dev.org
Homebrew PS2, PSP & PS3 Development Discussions
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

error : compile audio sample

 
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PSP Development
View previous topic :: View next topic  
Author Message
wuda_cn



Joined: 21 Mar 2008
Posts: 3

PostPosted: Fri Mar 21, 2008 4:09 pm    Post subject: error : compile audio sample Reply with quote

hi, all:
i compile the following audio sample code, but error appears.
Code:
/*
 * PSP Software Development Kit - http://www.pspdev.org
 * -----------------------------------------------------------------------
 * Licensed under the BSD license, see LICENSE in PSPSDK root for details.
 *
 * main.c - Basic audio sample.
 *
 * Copyright (c) 2005 Frank Buss <fb@frank-buss.de> (aka Shine)
 *
 * $Id: main.c 1147 2005-10-12 15:52:52Z mrbrown $
 */
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspaudiolib.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

/* Define the module info section */
PSP_MODULE_INFO("POLYPHONIC", 0, 1, 1);

/* Define the main thread's attribute value (optional) */
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

/* Define printf, just to make typing easier */
#define printf   pspDebugScreenPrintf

void dump_threadstatus(void);

/* Exit callback */
int exit_callback(int arg1, int arg2, void *common)
{
   sceKernelExitGame();

   return 0;
}

/* Callback thread */
int CallbackThread(SceSize args, void *argp)
{
   int cbid;

   cbid = sceKernelCreateCallback("Exit Callback", (void *) exit_callback, NULL);
   sceKernelRegisterExitCallback(cbid);

   sceKernelSleepThreadCB();

   return 0;
}

/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void)
{
   int thid = 0;

   thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
   if(thid >= 0)
   {
      sceKernelStartThread(thid, 0, 0);
   }

   return thid;
}

int  pspAudioInit();
void pspAudioEndPre();
void pspAudioEnd();

#define SAMPLE_COUNT 0x10000
float sample[SAMPLE_COUNT];

#define SAMPLE_RATE 44100

#define OCTAVE_COUNT 6

float octaves[OCTAVE_COUNT][12];

typedef struct {
   int note;
   int octave;
   int duration;
} Note_t;

typedef struct {
   Note_t currentNote;
   int noteIndex;
   int currentTime;
   float currentsampleIndex;
   float currentsampleIncrement;
} ChannelState_t;

ChannelState_t channelStates[3];

// "S" means "#"
#define NOTE_END -2
#define NOTE_PAUSE -1
#define NOTE_C 0
#define NOTE_CS 1
#define NOTE_D 2
#define NOTE_DS 3
#define NOTE_E 4
#define NOTE_F 5
#define NOTE_FS 6
#define NOTE_G 7
#define NOTE_GS 8
#define NOTE_A 9
#define NOTE_AS 10
#define NOTE_B 11

#define EIGHT_NOTE(note, octave, duration) { note, octave, SAMPLE_RATE * duration / 8}

Note_t channel0[] = {
   EIGHT_NOTE(NOTE_D, 4, 7),
   EIGHT_NOTE(NOTE_E, 4, 1),
   EIGHT_NOTE(NOTE_F, 4, 1),
   EIGHT_NOTE(NOTE_E, 4, 1),
   EIGHT_NOTE(NOTE_F, 4, 1),
   EIGHT_NOTE(NOTE_E, 4, 1),
   EIGHT_NOTE(NOTE_A, 3, 9),
   EIGHT_NOTE(NOTE_B, 3, 2),
   EIGHT_NOTE(NOTE_C, 4, 1),
   EIGHT_NOTE(NOTE_D, 4, 7),
   EIGHT_NOTE(NOTE_E, 4, 1),
   EIGHT_NOTE(NOTE_F, 4, 1),
   EIGHT_NOTE(NOTE_E, 4, 1),
   EIGHT_NOTE(NOTE_F, 4, 1),
   EIGHT_NOTE(NOTE_E, 4, 1),
   EIGHT_NOTE(NOTE_A, 3, 9),
   EIGHT_NOTE(NOTE_G, 3, 3),
   EIGHT_NOTE(NOTE_A, 3, 7),
   EIGHT_NOTE(NOTE_B, 3, 1),
   EIGHT_NOTE(NOTE_C, 4, 1),
   EIGHT_NOTE(NOTE_B, 3, 1),
   EIGHT_NOTE(NOTE_C, 4, 1),
   EIGHT_NOTE(NOTE_B, 3, 1),
   EIGHT_NOTE(NOTE_E, 3, 9),
   EIGHT_NOTE(NOTE_F, 3, 2),
   EIGHT_NOTE(NOTE_G, 3, 1),
   EIGHT_NOTE(NOTE_A, 3, 7),
   EIGHT_NOTE(NOTE_B, 3, 1),
   EIGHT_NOTE(NOTE_C, 4, 1),
   EIGHT_NOTE(NOTE_B, 3, 1),
   EIGHT_NOTE(NOTE_C, 4, 1),
   EIGHT_NOTE(NOTE_B, 3, 1),
   EIGHT_NOTE(NOTE_E, 3, 12),
   EIGHT_NOTE(NOTE_D, 4, 9),
   EIGHT_NOTE(NOTE_C, 4, 3),
   EIGHT_NOTE(NOTE_B, 3, 6),
   EIGHT_NOTE(NOTE_A, 3, 6),
   EIGHT_NOTE(NOTE_D, 4, 7),
   EIGHT_NOTE(NOTE_E, 4, 1),
   EIGHT_NOTE(NOTE_E, 4, 1),
   EIGHT_NOTE(NOTE_C, 4, 1),
   EIGHT_NOTE(NOTE_B, 3, 1),
   EIGHT_NOTE(NOTE_C, 4, 1),
   EIGHT_NOTE(NOTE_B, 3, 6),
   EIGHT_NOTE(NOTE_A, 3, 6),
   EIGHT_NOTE(NOTE_C, 4, 9),
   EIGHT_NOTE(NOTE_B, 3, 3),
   EIGHT_NOTE(NOTE_E, 3, 12),
   EIGHT_NOTE(NOTE_C, 4, 7),
   EIGHT_NOTE(NOTE_D, 4, 1),
   EIGHT_NOTE(NOTE_C, 4, 1),
   EIGHT_NOTE(NOTE_B, 3, 1),
   EIGHT_NOTE(NOTE_C, 4, 1),
   EIGHT_NOTE(NOTE_B, 3, 1),
   EIGHT_NOTE(NOTE_E, 3, 12),
   { NOTE_END, 0, 0 }
};

Note_t channel1[] = {
   EIGHT_NOTE(NOTE_D, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_D, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_A, 0, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_B, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_B, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_A, 0, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_D, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_D, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_A, 0, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_B, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_B, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_A, 0, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_F, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_C, 3, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_F, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_C, 1, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   EIGHT_NOTE(NOTE_C, 1, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   EIGHT_NOTE(NOTE_F, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_C, 3, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_F, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_C, 1, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   EIGHT_NOTE(NOTE_C, 1, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   EIGHT_NOTE(NOTE_D, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_D, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_A, 0, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_B, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_B, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_A, 0, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_D, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_D, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_A, 0, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_B, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_B, 1, 1),
   EIGHT_NOTE(NOTE_A, 1, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_A, 0, 1),
   EIGHT_NOTE(NOTE_E, 1, 1),
   EIGHT_NOTE(NOTE_F, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_C, 3, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_F, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_C, 1, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   EIGHT_NOTE(NOTE_C, 1, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   EIGHT_NOTE(NOTE_F, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_C, 3, 1),
   EIGHT_NOTE(NOTE_A, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_F, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_F, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_C, 1, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_G, 2, 1),
   EIGHT_NOTE(NOTE_E, 2, 1),
   EIGHT_NOTE(NOTE_D, 2, 1),
   EIGHT_NOTE(NOTE_C, 2, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   EIGHT_NOTE(NOTE_C, 1, 1),
   EIGHT_NOTE(NOTE_G, 1, 1),
   { NOTE_END, 0, 0 }
};

Note_t* channels[] = { channel0, channel1 };

void nextNote(int channel)
{
   ChannelState_t* state = &channelStates[channel];
   state->currentNote = channels[channel][state->noteIndex];
   state->currentTime = 0;
   state->currentsampleIndex = 0;
   int note = state->currentNote.note;
   if (note == NOTE_PAUSE) {
      state->currentsampleIncrement = 0;
   } else {
      state->currentsampleIncrement = octaves[state->currentNote.octave][note] * ((float) SAMPLE_COUNT) / ((float) SAMPLE_RATE);
   }

   state->noteIndex++;
   if (channels[channel][state->noteIndex].note == NOTE_END) state->noteIndex = 0;
}

// calculate current value of attack/delay/sustain/release envelope
float adsr(float time, float duration) {
   if (time < 0.0) return 0.0;
   const float attack = 0.004;
   const float decay = 0.02;
   const float sustain = 0.5;
   const float release = 0.08;
   duration -= attack + decay + release;
   if (time < attack) return time / attack;
   time -= attack;
   if (time < decay) return (decay - time) / decay * (1.0 - sustain) + sustain;
   time -= decay;
   if (time < duration) return sustain;
   time -= duration;
   if (time < release) return (release - time) / release * sustain;
   return 0.0;
}

void audioOutCallback(int channel, unsigned short* buf, unsigned int reqn)
{
   ChannelState_t* state = &channelStates[channel];
   unsigned int i;
   for (i = 0; i < reqn; i++) {
      float time = ((float) state->currentTime) / ((float) SAMPLE_RATE);
      if (state->currentTime++ == state->currentNote.duration) nextNote(channel);
      float value;
      if (state->currentsampleIncrement == 0.0) {
         value = 0.0;
      } else {
         value = sample[(int)state->currentsampleIndex] * adsr(time, ((float) state->currentNote.duration) / ((float) SAMPLE_RATE));
         value *= (float) 0x7000;
         state->currentsampleIndex += state->currentsampleIncrement;
         if (state->currentsampleIndex >= SAMPLE_COUNT) state->currentsampleIndex -= (float) SAMPLE_COUNT;
      }
      buf[0] = value;
      buf[1] = value;
      buf += 2;
   }
}

void audioOutCallback0(void *buf, unsigned int reqn, void *userdata) { audioOutCallback(0, buf, reqn); }
void audioOutCallback1(void *buf, unsigned int reqn, void *userdata) { audioOutCallback(1, buf, reqn); }

void createPitches(float base, float* target)
{
   int i;
   for (i = 0; i < 12; i++) {
      target[i] = base;
      base *= 1.0594630943592952645618252949463;  // 2^(1/12)
   }
}

int main(void)
{
   pspDebugScreenInit();
   SetupCallbacks();
   printf("Polyphonic sample by Shine\n\n");
   printf("Soundtrack of the movie\n");
   printf("\"Le fabuleux destin d'Amelie Poulain\"\n");
   printf("by Yann Tiersen\n");

        int i;
   int maxAt = SAMPLE_COUNT / 16;
   for (i = 0; i < SAMPLE_COUNT; i++) {
      float value;
      if (i < maxAt) {
         value = ((float) i) / ((float) maxAt) * 2.0 - 1.0;
      } else {
         value = 1.0 - ((float) (i - maxAt)) / ((float) (SAMPLE_COUNT - maxAt)) * 2.0;
      }
      sample[i] = value;
   }
   float base = 40.0;
   for (i = 0; i < OCTAVE_COUNT; i++) {
      createPitches(base, octaves[i]);
      base *= 2;
   }
   channelStates[0].noteIndex = 0; nextNote(0);
   channelStates[1].noteIndex = 0; nextNote(1);

   pspAudioInit();
   pspAudioSetVolume(0, 0x4000, 0x4000);
   pspAudioSetVolume(1, 0x4000, 0x4000);
   pspAudioSetChannelCallback(0, audioOutCallback0, NULL);
   pspAudioSetChannelCallback(1, audioOutCallback1, NULL);
   sceKernelSleepThread();

   return 0;
}



the compile command :
psp-gcc.exe "C:\devkitPro\devkitPSP\psp\sdk\samples\audio\polyphonic\main.c" -o "C:\devkitPro\devkitPSP\psp\sdk\samples\audio\polyphonic\main.elf" -I"C:\devkitPro\devkitPSP\psp\sdk\include" -I"C:\devkitPro\devkitPSP\psp\include" -I"C:\devkitPro\devkitPSP\psp\include\sys" -I"C:\devkitPro\devkitPSP\psp\sdk\include\libc" -I"C:\devkitPro\devkitPSP\psp\include\arpa" -I"C:\devkitPro\devkitPSP\psp\include\bits" -I"C:\devkitPro\devkitPSP\psp\include\machine" -I"C:\devkitPro\devkitPSP\psp\include\netinet" -L"C:\devkitPro\devkitPSP\lib" -L"C:\devkitPro\devkitPSP\psp\lib" -L"C:\devkitPro\devkitPSP\psp\sdk\lib" -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpsplibc -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -lpspaudiolib -lpspaudio -lm


the error is :

C:\devkitPro\devkitPSP\psp\sdk\lib\libpspaudiolib.a(pspaudiolib.o): In function `pspAudioEnd':
: undefined reference to `sceKernelDeleteThread'
C:\devkitPro\devkitPSP\psp\sdk\lib\libpspaudiolib.a(pspaudiolib.o): In function `pspAudioInit':
: undefined reference to `sceKernelDeleteThread'


please help me!
thanks in advance!
Back to top
View user's profile Send private message Yahoo Messenger
jean



Joined: 05 Jan 2008
Posts: 489

PostPosted: Fri Mar 21, 2008 8:55 pm    Post subject: Reply with quote

.... is that the whole polyphonic sample included in pspsdk?!?!?!? omg... Seems to be a sdk related issue, like some missing stub...i guess (by your pathnames) you are not using (cygwin+)toolchain+sdk or the heimdall's win32 compiled version... Personally i think issuing compile commands directly without the use of a makefile is NOT a good idea, but i cannot say if that command line is generated by some IDE..Anyway i noticed that the error you report seems to be generated in the compilation of the library itself!! You should compile your sdk before using it...or simply change your sdk to one of the already-made and widely supported on this forum. Good luck.
Back to top
View user's profile Send private message
wuda_cn



Joined: 21 Mar 2008
Posts: 3

PostPosted: Sat Mar 22, 2008 4:05 pm    Post subject: Reply with quote

thanks very much , jean.

development tool : devKitPro, dev c++.

this is the whole sample inclued in pspsdk of devKitPro tool.
i use dev c++ ide to compile it.
before compile it, i change gcc command, include dir and lib dir of dev c++ compile option to pspsdk related dir. and i update pspsdk to the lastst version from devKitPro website.

now, i want to know where the one of already-made and widely is and which the most popular development tool is.

thanks.
Back to top
View user's profile Send private message Yahoo Messenger
jean



Joined: 05 Jan 2008
Posts: 489

PostPosted: Sat Mar 22, 2008 6:50 pm    Post subject: Reply with quote

Personally i'm using Heimdall's sdk 0.6 for win32 (http://forums.ps2dev.org/viewtopic.php?t=9812) and NetBeans 6.0/Visual c++ express as IDE depending on my mood :)
Back to top
View user's profile Send private message
wuda_cn



Joined: 21 Mar 2008
Posts: 3

PostPosted: Mon Mar 24, 2008 11:37 am    Post subject: Reply with quote

thanks very much!
Back to top
View user's profile Send private message Yahoo Messenger
Display posts from previous:   
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PSP Development All times are GMT + 10 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group