Old 5th September 2002, 02:07   #1
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
First Winamp general plugin (n00b needs help!)

Hey everyone!
Ok, since I'm assuming that you've read the title, you all know that I need some help with creating my first Winamp plugin. I've downloaded the general plugin SDK and have no idea what does what (there are no helpful comments) so I have nowhere to start. I HAVE made an external "plugin" that basically lets you control Winamp using the keypad (I know others exist, but I wanted to do one myself). It isn't a windows program, just a simple DOS console one. Now, is there a way that I can use my existing code to create the plugin? Also, if someone would be willing to tell me how to create the actual DLL I would be very grateful. Incase you're wondering, I'm using Microsoft's Visual C++ 6.0 compiler.

Thanks a ton for reading my novel
gremlin

P.S. If you don't feel like doing a lot of typing, you can just post a site or two that might be helpful. Thanks again.
gremlin is offline   Reply With Quote
Old 15th September 2002, 09:45   #2
kichik
M.I.A.
[NSIS Dev, Mod]
 
kichik's Avatar
 
Join Date: Oct 2001
Location: Israel
Posts: 11,343
http://www.htbasic.com/simpledll.html

Instead of adding the files in there add the files you got from the SDK.

NSIS FAQ | NSIS Home Page | Donate $
"I hear and I forget. I see and I remember. I do and I understand." -- Confucius
kichik is offline   Reply With Quote
Old 15th September 2002, 22:21   #3
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
Where does my code go?

Thanks for the site, it helped a lot, but my main problem still exists: I need to put my code into the plugin. Where does it go?

Thanks again,
Gremlin
gremlin is offline   Reply With Quote
Old 15th September 2002, 22:30   #4
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
One more thing...

Also, would it be possible to get a "blank" SDK, not something full of commands and things that I don't need?

Thanks,
Gremlin
gremlin is offline   Reply With Quote
Old 16th September 2002, 10:56   #5
kichik
M.I.A.
[NSIS Dev, Mod]
 
kichik's Avatar
 
Join Date: Oct 2001
Location: Israel
Posts: 11,343
These two are the most important statements. In the first one you set the details for your plugin, version, name, init, config and quit functions (that Winamp will call). Later it will be filled by Winamp with Winamp's hWnd, and your DLL hInstance.
The second exporeted function gives Winamp the struct from the line above so it can know what functions it should call.

In those init, config, and quit (names that you can change) functions you can do whatever you want, that is, put your code.

code:
winampGeneralPurposePlugin plugin =
{
GPPHDR_VER,
"",
init,
config,
quit,
};

__declspec( dllexport ) winampGeneralPurposePlugin * winampGetGeneralPurposePlugin()
{
return &plugin;
}


NSIS FAQ | NSIS Home Page | Donate $
"I hear and I forget. I see and I remember. I do and I understand." -- Confucius
kichik is offline   Reply With Quote
Old 19th September 2002, 02:34   #6
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
Ok, thanks alot, that really cleared alot up for me, but now how do I get winamp to see my plugin? here's my code:

code:
#include <windows.h>
#include "gen.h"

int init();
void config();
void quit();

winampGeneralPurposePlugin plugin =
{
GPPHDR_VER,
"",
init,
config,
quit,
};


int init()
{
return 0;
}

void config()
{
MessageBox(NULL,"Test config","Testing...",MB_YESNO);
}

void quit()
{
}


__declspec( dllexport ) winampGeneralPurposePlugin * winampGetGeneralPurposePlugin()
{
return &plugin;
}




I know it's simple, but I'm just starting. What am I forgetting?

Thanks,
gremlin
gremlin is offline   Reply With Quote
Old 19th September 2002, 14:04   #7
kichik
M.I.A.
[NSIS Dev, Mod]
 
kichik's Avatar
 
Join Date: Oct 2001
Location: Israel
Posts: 11,343
You have got to give it a name, or else you won't see it in the plugin list.

NSIS FAQ | NSIS Home Page | Donate $
"I hear and I forget. I see and I remember. I do and I understand." -- Confucius
kichik is offline   Reply With Quote
Old 20th September 2002, 02:39   #8
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
Ok, by now I know you're probably thinking that I'm an idiot, but it still won't work. There's got to be something missing! Pleasa keep in mind that I've never done this before, ever. I have no idea of what is needed for a Winamp plugin.

Thanks for the help,
Gremlin
gremlin is offline   Reply With Quote
Old 20th September 2002, 09:41   #9
kichik
M.I.A.
[NSIS Dev, Mod]
 
kichik's Avatar
 
Join Date: Oct 2001
Location: Israel
Posts: 11,343
Just to make sure, this:

code:
winampGeneralPurposePlugin plugin =
{
GPPHDR_VER,
"",
init,
config,
quit,
};



should be this:

code:
winampGeneralPurposePlugin plugin =
{
GPPHDR_VER,
"my plugin name here",
init,
config,
quit,
};



I don't think you are an idiot, just a begginer, and that's OK. We all were begginers at the beggining

If it still doesn't word attach the entire code (all of the files) and I will have a look at it.

NSIS FAQ | NSIS Home Page | Donate $
"I hear and I forget. I see and I remember. I do and I understand." -- Confucius
kichik is offline   Reply With Quote
Old 20th September 2002, 20:33   #10
dilbert627
Junior Member
 
Join Date: Apr 2001
Posts: 7
Hmm, I tried the above code as well, and even with a name, it doesn't do anything. It shows up in the Winamp plugins list as [NOT_LOADED]. I even added a MessageBox in the init() function, but it doesn't show up.
dilbert627 is offline   Reply With Quote
Old 20th September 2002, 20:47   #11
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
Well, that's good, I just hate asking so many questions, I find that some people get frustrated when I do. Yes, I did put the name of the plugin between those quotes, like in your example, but no, it still didn't work. I have attached the two files that get compiled for the plugin that I'm working on, (zipped, so I hope you have windows), so that you can see exactly what I'm working with. It's for Microsoft VC++ 6.0.

Thanks again for all your help,
gremlin

P.S.
My MSN email is gremlin@sloche.com. If you have MSN Messenger, feel free to add me to your list, so that we can talk live. Thanks again.
Attached Files
File Type: zip gen_keypad.zip (669 Bytes, 1316 views)
gremlin is offline   Reply With Quote
Old 20th September 2002, 21:16   #12
kichik
M.I.A.
[NSIS Dev, Mod]
 
kichik's Avatar
 
Join Date: Oct 2001
Location: Israel
Posts: 11,343
Try adding this function:

code:
BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
{
return TRUE;
}



Also try to build in Release mode rather than debug.

NSIS FAQ | NSIS Home Page | Donate $
"I hear and I forget. I see and I remember. I do and I understand." -- Confucius
kichik is offline   Reply With Quote
Old 21st September 2002, 05:15   #13
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
I got it! Sorry, but I didn't use your code exactly. I pretty much just opened up the gen_minisdk that I downloaded, then stripped away the useless stuff until I got the bare minimum needed to have a working plugin. Actually, it looks almost exactly like what you've given me. Email me if you need a more detailed explanation (gremlin@sloche.com). I do have a new question though, which will be going in its own post, but I figure what the hey, why not ask it here first: When I capture keyboard events, how do I stop them from continuing to Winamp? Here's an example of what is happening, which I don't want:

Normally in Winamp the 0 (zero) key on the numpad opens the Open File dialog box. In my plugin I make the 0 (zero) key stop whatever is playing (if anything is playing). But, when I press 0 (zero), first it stops the playing (my code does that, so there's no problem there), then it opens the Open File dialog box! I know that there is a way to stop the key presses from actually getting to Winamp, but how?

Thanks alot for all of your help,
gremlin
gremlin is offline   Reply With Quote
Old 21st September 2002, 10:31   #14
kichik
M.I.A.
[NSIS Dev, Mod]
 
kichik's Avatar
 
Join Date: Oct 2001
Location: Israel
Posts: 11,343
Is that a hotkey or just key processing in Winamp?

Anyway, you need to subclass Winamp and prevent it from getting the message.

NSIS FAQ | NSIS Home Page | Donate $
"I hear and I forget. I see and I remember. I do and I understand." -- Confucius
kichik is offline   Reply With Quote
Old 21st September 2002, 17:00   #15
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
I'm pretty sure that it's a hotkey, but I'm not positive. Also, what do you mean by subclass, and how would I go about doing it?

Thanks,
gremlin
gremlin is offline   Reply With Quote
Old 21st September 2002, 20:43   #16
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
Never mind, I got it. Turns out I HAVE subclassed winamp, but my problem was that after executing my code on a keypress, I didn't return 1, and by not returning anything right away, it went on to Winamp. I think that I have it all worked out now, you have my greatest gratitude. If you ever need anything, feel free to email. BTW, my source will become public once I release my plugin, because I feel that since it has been and will be built on mostly existing code that others wrote, it's only fair to give a little something back.

Thanks for all your help,
gremlin
gremlin is offline   Reply With Quote
Old 22nd September 2002, 02:40   #17
dilbert627
Junior Member
 
Join Date: Apr 2001
Posts: 7
Gremlin: what did you do differently the first time to make it work? I still can get anything to happen.
dilbert627 is offline   Reply With Quote
Old 22nd September 2002, 05:34   #18
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
First, I downloaded the gen_minisdk from the Development section of winamp.com. I opened the workspace, then commented out things that I thought weren't needed, bit by bit. I have attached the edited file as a template for your plugin. The only thing that I had trouble with at first is using the callback. I'm not entirely sure about how it works, so you should probably learn about it if you haven't already. If you have anymore trouuble feel free to email me, or post in here.

Notes:
- When you compile the template you will get 2 warnings (using Microsoft VC++ 6.0)
- Do not change the file to a .cpp file, as it will not work (don't ask me why, I have no idea)
- put Gen.h into your include folder, or in the folder that has your project
- Put your code in the config(), init(), and quit() functions, in the callback routine, and add your own functions
- Make sure the __declspec stuff stays at the very bottom of your code

gremlin
gremlin is offline   Reply With Quote
Old 23rd September 2002, 20:50   #19
dilbert627
Junior Member
 
Join Date: Apr 2001
Posts: 7
OK, I finally got the basic template working. Running in RELEASE mode is very important .
dilbert627 is offline   Reply With Quote
Old 23rd September 2002, 23:32   #20
kichik
M.I.A.
[NSIS Dev, Mod]
 
kichik's Avatar
 
Join Date: Oct 2001
Location: Israel
Posts: 11,343
Yep, most of Nullsoft stuff doesn't compile in Debug mode. I don't know about Winamp3, but most of the good n' old stuff anyway

NSIS FAQ | NSIS Home Page | Donate $
"I hear and I forget. I see and I remember. I do and I understand." -- Confucius
kichik is offline   Reply With Quote
Old 23rd September 2002, 23:49   #21
allowat
Junior Member
 
Join Date: Sep 2002
Posts: 2
Hey,

I'm also trying to get a general purpose plugin working. I got it working fine using the gen_minisdk, but, I wanted my plugin to be in c++, not c, so, I tried to create a new dll. I pretty much copied the code from the gen_minisdk into the new project but the files had a .cpp extension instead of a .c extension. Everything compiles fine, but, when I put the dll in the plugins directory, it doesn't do anything. Any ideas why this might be?
(yes, the name is of the form gen_whatever.dll)

Any help would be appreciated.
allowat is offline   Reply With Quote
Old 24th September 2002, 11:20   #22
kichik
M.I.A.
[NSIS Dev, Mod]
 
kichik's Avatar
 
Join Date: Oct 2001
Location: Israel
Posts: 11,343
If working with CPP exports are exported differently. Create a file named yourprojectnamehere.DEF and add it to your project. Open it and write:

code:

LIBRARY ResourceEditor

EXPORTS
winampGetGeneralPurposePlugin



This should work for gen plugins, I don't know about other type of plugins, maybe they have more exported functions.

NSIS FAQ | NSIS Home Page | Donate $
"I hear and I forget. I see and I remember. I do and I understand." -- Confucius
kichik is offline   Reply With Quote
Old 24th September 2002, 16:59   #23
allowat
Junior Member
 
Join Date: Sep 2002
Posts: 2
Thanks a lot kichik. I got it working =)
allowat is offline   Reply With Quote
Old 27th September 2002, 03:19   #24
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
Hey, I'm back! Just aquick note/question here: I did my entire plugin using debug mode, and I only got 2 warnings which haven't caused any problems. My question is, how do I compile in release mode? BTW, I've submited my plugin to Winamp, so once it's on you can all see the fruits of my labour

Thanks again to all of you for your help, I never thought that my thread would start so much discussion!

gremlin
gremlin is offline   Reply With Quote
Old 27th September 2002, 10:28   #25
kichik
M.I.A.
[NSIS Dev, Mod]
 
kichik's Avatar
 
Join Date: Oct 2001
Location: Israel
Posts: 11,343
Build->Set Active Configuration->Release, OK.

NSIS FAQ | NSIS Home Page | Donate $
"I hear and I forget. I see and I remember. I do and I understand." -- Confucius
kichik is offline   Reply With Quote
Old 27th September 2002, 20:02   #26
gremlin
Junior Member
 
Join Date: Sep 2002
Posts: 16
ya, I just figured it out right after I posted, but thanks anyways. It made no difference to my program, so I don't see why it did for everyone else.
gremlin is offline   Reply With Quote
Old 28th September 2002, 12:32   #27
kichik
M.I.A.
[NSIS Dev, Mod]
 
kichik's Avatar
 
Join Date: Oct 2001
Location: Israel
Posts: 11,343
They didn't have the main function in there which is required for the debug build I guess.
Releasing in release mode is recommended because the files turn out a lot smaller.

NSIS FAQ | NSIS Home Page | Donate $
"I hear and I forget. I see and I remember. I do and I understand." -- Confucius
kichik is offline   Reply With Quote
Old 18th February 2003, 00:40   #28
gb115
Junior Member
 
Join Date: Feb 2003
Posts: 48
I can't get winamp to recognise my plug in either!!! can someone attatch the empty template source code so I can see what I'm doing wrong

I'm using MS visual studio (C++)
gb115 is offline   Reply With Quote
Old 18th February 2003, 01:22   #29
Lion King
Major Dude
 
Join Date: Jan 2001
Posts: 1,670
that one? http://ftp.mirrors.degnet.de/pub/mir...en_minisdk.zip
Lion King is offline   Reply With Quote
Old 18th February 2003, 09:26   #30
gb115
Junior Member
 
Join Date: Feb 2003
Posts: 48
no but thanks anyway

nah, the empty template code they were talking about, the same as contained in the zip with most of it commented out or removed.

doesn't matter actually worked out what was wrong (Duh, forgot to name my dll gen_whatever.dll)
gb115 is offline   Reply With Quote
Old 3rd March 2003, 00:38   #31
tsigo
Junior Member
 
Join Date: Mar 2003
Posts: 1
I've gotten a regular plugin to show up in Winamp, but why is it whenever I add a dialogue and resource script to the DLL I get this error?

code:

Linking...
.\Debug\script1.res : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
Error executing link.exe.

tsigo is offline   Reply With Quote
Old 31st May 2006, 15:40   #32
TrashLock
Junior Member
 
Join Date: Apr 2005
Location: Switzerland
Posts: 14
Send a message via AIM to TrashLock
Does anyone have an empty ML plugin? Do I just include the header files in gen_empty.c ? Please help, I just want to make a plugin that's able to search the ML for a special song, and put it in the "now playing" playlist.

I have pretty good knowledge of C++, but no experience with coding Plug-Ins!
TrashLock is offline   Reply With Quote
Old 31st May 2006, 15:42   #33
DrO
 
Join Date: Sep 2003
Posts: 27,873
ml_ex is in the sdk which is about as basic as a ml plugin can get

-daz
DrO is offline   Reply With Quote
Old 5th July 2007, 17:07   #34
burek021
Junior Member
 
Join Date: Jul 2007
Posts: 28
This is by far the most useful thread (for me) here, since it contains real examples which can help. Also, you could place some comments for newbies to understand some things better.

First of all, I _strongly_ suggest that you read this page:
http://bcbjournal.org/articles/vol2/...m_in_a_DLL.htm
(bcbjournal.org/articles/vol2/9809/Using_a_VCL_form_in_a_DLL.htm)
since it explains what's going on in the dll. Since the most common reason for winamp not to load your plugin is that the main export function "winampGetGeneralPurposePlugin" becomes mangled in the export list of a dll. That means that your dll will contain information like it contains a function named _winampGetGeneralPurposePlugin or @winampGetGeneralPurposePlugin or even worse. This 'renaming' of function is clearly explained at the link above, so I suggest you to read it.

Also, there is a pretty little tool called "DLL Export Viewer" at this page:
http://www.nirsoft.net/utils/dll_export_viewer.html
(w w w .nirsoft.net/utils/dll_export_viewer.html)
which can help you to see what's inside your dll.

Winamp plugins will need to have the main export function "winampGetGeneralPurposePlugin" unmangled (not renamed) in order to work correctly, otherwise you will see your plugin in winamp with the text [NOT LOADED] beside the plugin name.



However, I've managed to compile the dll for Borland CBuilder (v6.0) so here is what I did (if anyone needs this info).


1. Make sure you have 2 files named "gen_empty.c" and "gen_empty.h" which contain the basic code for a plugin to work. If you don't here is the content of those two files, so copy/paste it to your text editor.

content of file: gen_empty.h
code:



#ifndef gen_empty_h
//---------------------------------------------------------------------------
#define gen_empty_h
#include <windows.h>

// plugin version (don't touch this)
#define GPPHDR_VER 0x10

// plugin name/title (change this to something you like)
#define GPPHDR_NAME "MyFirstPlugin v1.0 (gen_first.dll)"


// main structure with plugin information, version, name...
typedef struct {
int version; // version of the plugin, defined in "gen_empty.h"
char *description; // name/title of the plugin, defined in "gen_empty.h"
int (*init)(); // function which will be executed on init event
void (*config)(); // function which will be executed on config event
void (*quit)(); // function which will be executed on quit event
HWND hwndParent; // (?)
HINSTANCE hDllInstance; // (?)
} winampGeneralPurposePlugin;


extern winampGeneralPurposePlugin *gen_plugins[256];
typedef winampGeneralPurposePlugin * (*winampGeneralPurposePluginGetter)();
//---------------------------------------------------------------------------
#endif






content of file: gen_empty.c
code:



//---------------------------------------------------------------------------
#include <windows.h>
#include "gen_empty.h"


// these are callback functions/events which will be called by Winamp
int init(void);
void config(void);
void quit(void);


// this structure contains plugin information, version, name...
winampGeneralPurposePlugin plugin = {
GPPHDR_VER, // version of the plugin, defined in "gen_empty.h"
GPPHDR_NAME, // name/title of the plugin, defined in "gen_empty.h"
init, // function name which will be executed on init event
config, // function name which will be executed on config event
quit, // function name which will be executed on quit event
};


// event functions follow

int init() {
MessageBox(plugin.hwndParent, "Init", "", MB_OK);
return 0;
}

void config() {
MessageBox(plugin.hwndParent, "Config", "", MB_OK);
}

void quit() {
MessageBox(0, "Quit", "", MB_OK);
}


// this is an export function called by winamp which returns this plugin info
extern "C" __declspec(dllexport) winampGeneralPurposePlugin * winampGetGeneralPurposePlugin() {
return &plugin;
}
//---------------------------------------------------------------------------





Once you have these 2 files, you can proceed to the next step


2. Open the Borland CBuilder and go to File->New->Other...
Choose the "DLL Wizard" option and create a new C/C++ dll project (probably, you will need to chech "Use VCL" if you would like to use forms, buttons and dialogs in your plugin)


3. Save the project file (.bpr) in a new empty folder and name it, for ex. "gen_first" and also you'll be prompted to save the c/cpp file, so name it "gen_empty". It is important that you save the c/cpp file as a "gen_empty". The content of that folder should be something like:

gen_first.bpr
gen_empty.c (or gen_empty.cpp)

..other files..


4. Now back to step 1, where we have 2 files for winamp plugin, now copy twose two files over to that project folder overwriting "gen_empty.c" or "gen_empty.cpp".


5. Next, open the project in the CBuilder and go to Project->Build and build it. There should be no errors. If there is, please contact me via this board or via email: burek021 (AT) gmail (DOT) com


6. Now, look into your project folder, you should see one DLL file (possibly named "gen_first.dll") which you need to copy to folder C:\Program Files\Winamp\Plugins\.


7. Restart Winamp (turn off, then turn back on) and go to Preferences -> Plugins -> General purpose, you should see your plugin there.


Happy coding
burek021 is offline   Reply With Quote
Old 5th July 2007, 23:26   #35
Joel
Debian user
(Forum King)
 
Joel's Avatar
 
Join Date: Jan 2003
Location: Arch land
Posts: 4,917
Oh! Nice

Hi burek021!
I understand what did you write, but is been stated that developing plugins, as pre-requisite, you already must know the language in this case C or C++.


* PC: Intel Core 2 DUO E6550 @ 2.33 GHz with 2 GB RAM: Archlinux-i686 with MATE.
* Laptop: Intel Core 2 DUO T6600 @ 2.20 GHz with 4 GB RAM: Archlinux-x86-64 with MATE.
Joel is offline   Reply With Quote
Old 6th July 2007, 12:47   #36
burek021
Junior Member
 
Join Date: Jul 2007
Posts: 28
Hi Joel!

Yes I know, but it's always much easier if you start from something that works and continue to develop something bigger. That's the main reason why I wrote that message.

Also, I've managed to compile a general purpose plugin for Borland Delphi (v7). It was really simple. All you need is to go to File->New->Other... and then choose DLL Wizard. After a new blank dll project opens, select all, and replace with this:

code:


library gen_delphi_plugin;

uses
Windows,
SysUtils,
Classes;

{$R *.res}

const
// plugin version (don't touch this)
GPPHDR_VER = $10;

// plugin title (change this to what you like)
GPPHDR_NAME = 'MyEmpyDelphiPlugin v1.0 (gen_delphi_plugin.dll)';

type
// main structure with plugin information, version, name...
TWinampGeneralPurposePlugin = record
version :integer; // version of the plugin, defined in "gen_empty.h"
description :PChar; // name/title of the plugin, defined in "gen_empty.h"
init :Pointer; // function which will be executed on init event
config :Pointer; // function which will be executed on config event
quit :Pointer; // function which will be executed on quit event
hwndParent :THandle; // (?)
hDllInstance :THandle; // (?)
end;
PWinampGeneralPurposePlugin = ^TWinampGeneralPurposePlugin;

// I don't know what is "FWinampGeneralPurposePluginGetter" or if it is being used
FWinampGeneralPurposePluginGetter = function :PWinampGeneralPurposePlugin;

var
plugin :TWinampGeneralPurposePlugin;
// I don't know what is "gen_plugins" or if it is being used
// You will get a warning/hint saying that gen_plugin is never used
gen_plugins :Array[0..255] of PWinampGeneralPurposePlugin;


//-------------------------
// events functions follow
// (place your code there)
//-------------------------

function plugin_init :integer;
begin
MessageBox(plugin.hwndParent, 'Init', '', MB_OK);
Result := 0;
end;

procedure plugin_config;
begin
MessageBox(plugin.hwndParent, 'Config', '', MB_OK);
end;

procedure plugin_quit;
begin
MessageBox(0, 'Quit', '', MB_OK);
end;

//-------------------------

// this is an export function called by winamp which returns this plugin info
function winampGetGeneralPurposePlugin: PWinampGeneralPurposePlugin;
begin
Result := @plugin;
end;

exports
winampGetGeneralPurposePlugin,
gen_plugins;

begin
// initialize the plugin structure
with plugin do
begin
version := GPPHDR_VER; // version of the plugin
description := GPPHDR_NAME; // name/title of the plugin
init := @plugin_init; // function name which will be executed on init event
config := @plugin_config; // function name which will be executed on config event
quit := @plugin_quit; // function name which will be executed on quit event
hwndParent := 0;
hDllInstance := 0;
end;
end.

burek021 is offline   Reply With Quote
Old 21st July 2010, 19:01   #37
eo.rojas
Junior Member
 
Join Date: Jul 2010
Posts: 5
VS 2008 problem with building DLL

OK, this is really dumb, but I downloaded the SDK and successfully builds, but there is no DLL file to be found.
In the coverdirectory explample it outputs
C:\Program Files (x86)/Winamp/System/coverdirectory.w5s and .ilk
Debug\cover_directory[.exp, .lib, w5s.embed.manifest*]
and some other stuff. I have not written many DLLs, but it has not been a problem in the past.

Visual Studio did convert the sln and vcproj files, but the look essentially the same.

Any clues?
eo.rojas is offline   Reply With Quote
Old 21st July 2010, 19:54   #38
eo.rojas
Junior Member
 
Join Date: Jul 2010
Posts: 5
OK, I figured out that some of the projects in the SDK create these w5s files, and some create DLLs. I was able to get a DLL file working. However, it turns out I wanted to start with the plLoad (playlist load project). I was hoping that I could catch when a file played, but the code I modified does not seem to get called. I modified and tested in_chain to get called. If someone can direct me to the right place to ask this question or the right place to find out how and what these w5s file work I'd appreciate it.
eo.rojas is offline   Reply With Quote
Reply
Go Back   Winamp & Shoutcast Forums > Developer Center > Winamp Development

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump