Re: DLL - entry point

From: Dan Freeman (spam_at_microsoft.com)
Date: 08/04/04

  • Next message: Lee Mitchell: "RE: multiple exe"
    Date: Wed, 4 Aug 2004 10:22:59 -0700
    
    

    Is it possible your startup directory isn't what you think it is?

    After your lparameters line, add WAIT WINDOW CURDIR() to see.

    Otherwise, what you've posted here should work.

    Dan

    Wilson Thomas wrote:
    > Thanks for the info. I have created multiple project like main
    > project with code, all forms in another project and all reports in a
    > third project. But it does not work as expected.
    >
    > E.g., to print a report "emp_list" report, I pass the parameter from
    > the main program to the report exe, which contain a start up program
    > and all reports included.
    >
    > DO allreports.exe WITH "emp_list"
    >
    > Strat up program in report exe is
    > ------
    > LPARAMETERS cReportName
    >
    > IF TYPE('cReportName') = "L"
    > RETURN
    > ENDIF
    >
    > cReportName = ".\reports\" + ALLTRIM(cReportName)
    > REPORT FORM &cReportName PREVIEW
    > --------
    > Any help would be appreciated.
    >
    > If this way is not possible, any other alternative
    >
    > Regards
    >
    > Wilson
    >
    > "Sietse Wijnker" <sietse.wijnker@ATsw-software.nl> wrote in message
    > news:#J$vayGdEHA.720@TK2MSFTNGP11.phx.gbl...
    >> Hi,
    >>
    >> DLLs created with VFP are not function libraries as you can create
    >> them with f.i. C++. The dll files in VFP are COM-components
    >> (single-or multi-threaded). This means that when you create a DLL
    >> with VFP you'll have to instanciate an OLEPUBLIC class within that
    >> dll to access code within the library.
    >>
    >> FI
    >> DEFINE CLASS SayHello AS Custom OLEPUBLIC
    >> PROCEDURE SayHello(cString)
    >> STRTOFILE(cString, "log.txt")
    >> ENDPROC
    >> ENDDEFINE
    >> Save the following code to SayHello.prg and compile the dll using
    >> BUILD PROJECT SayHello FROM SayHello.prg
    >> BUILD DLL SayHello.dll FROM SayHello
    >> in the command window (BTW. I'm using a single threaded dll here, to
    >> create a multithreaded dll use BUILD MTDLL)
    >> There's a good piece of info in the VFP help on 'Creating Automation
    >> Servers'
    >>
    >> Problem you'll find is that COM-components in DLL CAN'T visually
    >> interact with the user. If you want your library to visually
    >> interact with the user, you'll have to compile the secondary project
    >> to an EXE or an APP. This gives you the possibility to have a
    >> completely other design because now you can have a main startup
    >> program or form which starts when you activate the app or exe (do
    >> 2ndappfile.exe)
    >> You can also use SET CLASSLIB to refer to a classlib in the other
    >> app-file
    >>
    >> HTH,
    >> Sietse Wijnker
    >>
    >> "Noble Thomas" <nobletk@optusnet.com.au> wrote in message
    >> news:4107356b$0$25459$afc38c87@news.optusnet.com.au...
    >>> I am using VFP 6. My EXE file is getting bigger and bigger, which
    >>> makes us hard to send file via email for support. So we have
    >>> decided to use DLL projects for easy support.
    >>>
    >>> To test functioning of DLL's I have created a small project with a
    >>> function to display "Hello World" and used the following command to
    >>> call, but giver error "Cannot fing the entry point SayHello in the
    >>> dll".
    >>>
    >>> This is the program
    >>> -----------
    >>> SayHello() && Calling the function
    >>> FUNCTION SayHello
    >>> =MESSAGEBOX("Hello World 123")
    >>> ENDFUNC
    >>> -----------
    >>>
    >>> Command issued is
    >>> --------------
    >>> declare SayHello in test1.dll
    >>> ?sayHello() **** gives error *****
    >>> ---------------
    >>>
    >>> Any help would be appreciated.
    >>>
    >>> If anyone can forward a small project like this to demo dll
    >>> function, that would be a great help
    >>>
    >>> rgds
    >>>
    >>> Wilson


  • Next message: Lee Mitchell: "RE: multiple exe"