Re: DLL - entry point

From: Dan Freeman (
Date: 08/05/04

  • Next message: Lee Mitchell: "Re: multiple exe"
    Date: Thu, 5 Aug 2004 09:24:40 -0700

    Take the relative path out of your REPORT FORM command. When the report is
    built into the EXE, the project manager will resolve pathing issues when the
    EXE is built.


    Wilson Thomas wrote:
    > My working directory contains a directory called "reports" with all
    > reports. All these reports are included in the allreports.exe file.
    > Then main.exe and allreports.exe are copied to a directory "c:\test"
    > (report folder is not copied since all reports are added to
    > Allreports.exe. Main.exe is working fine. While allreports is called
    > it says file not found. CURDIR() shows .\TEST\. I never hardcode full
    > path and reports are called like .\REPORTS\name
    > Hope it is clear
    > "Dan Freeman" <> wrote in message
    > news:evczGekeEHA.2852@tk2msftngp13.phx.gbl...
    >> 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" <> 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" <> wrote in message
    >>>> news:4107356b$0$25459$
    >>>>> 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"

    Relevant Pages

    • Re: Specific printers and print dialogue?
      ... In fact, I build a custom menu bar, and use that for all reports. ... In access 2002 and later, there is a built in printer object, and it lets ... you switch the printer with ease. ... swtich object, then you can use my lightweight printer switch code here: ...
    • Honda not so small
      ... Here's some selective quotes from the article. ... Horiike also scoffed at reports that HRC had built its new RC212V around Spaniard Dani Pedrosa, angrily denying the new V4 was purpose built for the triple world champion. ...
    • Re: Cups Problem - Restated
      ... > It looks like the dependencies of cupsys are slightly outdated. ... Specifically, lpinfo -v reports only network, direct scsi ... usb support was built into the current kernel which I built on ...
    • Re: Including report forms in exe
      ... I have never put reports in the directory the project is in, ... or where the .exe is being built from it will give you ... "Jim Czeb" wrote: ...
    • Re: .NET 1.1 and 2.0 side by side execution problems
      ... >I have clients using a .NET application built and distributed with .NET ... > When the 2.0 Framework is installed. ... This application stops working and ... > reports a data access error. ...