PureBytes Links
Trading Reference Links
|
Ok, I did that, but the problem remains. I've edited the def file to
read
LIBRARY SIMPLE.DLL
EXPORTS
FROT @1 ; FROT
___CPPdebugHook @2 ; ___CPPdebugHook
I guess I'll need to run a tool to modify the dll now. Tradestation
probably doesn't read the DEF file directly. Can't find anything in the
help files to achieve this though. Maybe I should switch to Visual C++?
> -----Original Message-----
> From: Mike Eggleston [mailto:mikee@xxxxxxxxxxxx]
> Sent: woensdag 20 november 2002 16:58
> To: Mark Smeets
> Cc: omega-list@xxxxxxxxxx
> Subject: Re: Dlls and tradestation
>
>
> On Wed, 20 Nov 2002, Mark Smeets wrote:
>
> > Hello,
> >
> > I'm new to this list, so allow me to introduce myself. My
> name is Mark
> > Smeets and I'm interested in developing trading systems. Up
> until now
> > I've always used my own software, but for various reasons
> (mostly about
> > standardization) I've switched to tradestation. I wanted to
> port some
> > systems developed on my own software to tradestation but
> quickly came to
> > the conclusion that easylanguage itself wouldn't be enough
> for certain
> > computation intensive functions. Programming this
> functionality in a DLL
> > would probably solve that problem. There the trouble
> started. I'm used
> > to unix development and quickly discovered that there are
> some subtle
> > differences when developing for the windows platform. Even
> more so for
> > Tradestation. So, I have a question about developing dlls
> for ts2000i.
> >
> > Using Borland C++ builder 5, I've made a very small dll
> that contains
> > nothing more than a function returning a constant. Nothing
> fancy, and I
> > have no problem linking the dll in a small test
> application. However,
> > when I call this dll from tradestation, I get an "Unable to
> open FROT"
> > error message (where frot is the function I'm calling).
> >
> > The el code for the easylanguage function dlltest looks
> something like
> >
> > DefineDLLFunc: "SIMPLE.DLL", LPLONG, "frot";
> > dlltest = frot();
> >
> > The DLL is placed in C:\program files\Omega
> Research\Program, so that
> > should be ok.
> >
> > Furthermore, the C++ code looks like:
> >
> > #include <windows.h>
> > #include <elkit32.h>
> > int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long
> reason, void*
> > lpReserved)
> > {
> > return 1;
> > }
> > LPLONG __export frot()
> > {
> > return 300;
> > }
> >
> > The elkitbor.lib file was added to the project. After
> building, I used a
> > impdef to create a DEF file. Maybe it is useful to discover
> what I am
> > doing wrong. Here it is:
> >
> > LIBRARY SIMPLE.DLL
> >
> > EXPORTS
> > @frot$qv @1 ; frot()
> > ___CPPdebugHook @3 ; ___CPPdebugHook
> >
> >
> > What am I doing wrong? The developers kit documentation
> mentions that it
> > is not sufficient to just _export the functions. But what is?
> >
> > Any help will be appreciated.
> >
> > Regards,
> >
> > Mark Smeets.
> >
> >
>
> You need to create your own def file and give the called
> function a name
> in all CAPS. Use the windows exporting keywords. In vc5.0 I
> have functions
> that begin
>
> __declspec(dllexport) int __stdcall FROT(void)
> {
> return 1;
> }
>
> Make sure you put the dll someplace where tradestation can find it. I
> use c:\temp and in the EL I put
>
> DefineDLLFunc: "c:\temp\mydll.dll", LONG, "FROT";
>
> In the window parlance LPLONG means you're returning a
> pointer to a long.
> I try to use no pointers at all with TSX. For me it causes problems.
>
> Mike
>
|