digitalmars.D.learn - Some issues (bugs?) with generated header files
- Andre (46/46) Apr 05 2014 Hi,
- evilrat (11/63) Apr 05 2014 i have little info about this, but let me clear something for you.
- Andre (4/13) Apr 05 2014 Thanks a lot for clarification.
- evilrat (16/24) Apr 05 2014 the problem with this that your code doesnt specify neither auto
- evilrat (2/7) Apr 05 2014 oops. this of course should be like normal function.
Hi, i want to generate header (di) files for a library I developed and faced some issues. The project structure is: source -wba --com ---defintions.d ---... --dispatcher.d --... --package.d MonoDevelop generated following statement for me: C:\D\dmd2\windows\bin\dmd.exe -debug -gc "source\wba\com\definitions.d" "source\wba\com\docHostUIHandler.d" "source\wba\com\oleClientSite.d" "source\wba\com\oleInPlaceFrame.d" "source\wba\com\oleInPlaceSite.d" "source\wba\com\storage.d" "source\wba\com\webBrowserEvents2.d" "source\wba\dispatcher.d" "source\wba\main.d" "source\wba\objectForScripting.d" "source\wba\package.d" "source\wba\wbWrapper.d" "source\wba\webbrowser.d" "source\wba\webBrowserForm.d" "-IC:\D\dmd2\src\druntime\import" "-IC:\D\dmd2\src\phobos" "-IC:\D\lib\WindowsAPI" -lib "-odobj\Header" "-ofJ:\Workspace\Libraries\WebBrowserApplication\bin\Header\wba.lib" -H 3 issues: 1) While using the header files in another project, the package.di file does not work as expected. I cannot use statement: import wba; main.d(3): Error: module wba is in file 'wba.d' which cannot be read It only works if I rename package.di to package.d 2) property methods doesn't work with header files. For this coding: property docHostUIHandler() { return this._docHostUIHandler; } This di coding was created: property docHostUIHandler(); While using in another project these errors are raised for the line in the di coding: Error: function declaration without return type. (Note that constructors are always named 'this') Error: no identifier for declarator docHostUIHandler() 3) How can I specify the output folder for the di files and also specify that the same folder structure is used as described above (wba, wba/com) Kind regards André
Apr 05 2014
On Saturday, 5 April 2014 at 10:00:13 UTC, Andre wrote:Hi, i want to generate header (di) files for a library I developed and faced some issues. The project structure is: source -wba --com ---defintions.d ---... --dispatcher.d --... --package.d MonoDevelop generated following statement for me: C:\D\dmd2\windows\bin\dmd.exe -debug -gc "source\wba\com\definitions.d" "source\wba\com\docHostUIHandler.d" "source\wba\com\oleClientSite.d" "source\wba\com\oleInPlaceFrame.d" "source\wba\com\oleInPlaceSite.d" "source\wba\com\storage.d" "source\wba\com\webBrowserEvents2.d" "source\wba\dispatcher.d" "source\wba\main.d" "source\wba\objectForScripting.d" "source\wba\package.d" "source\wba\wbWrapper.d" "source\wba\webbrowser.d" "source\wba\webBrowserForm.d" "-IC:\D\dmd2\src\druntime\import" "-IC:\D\dmd2\src\phobos" "-IC:\D\lib\WindowsAPI" -lib "-odobj\Header" "-ofJ:\Workspace\Libraries\WebBrowserApplication\bin\Header\wba.lib" -H 3 issues: 1) While using the header files in another project, the package.di file does not work as expected. I cannot use statement: import wba; main.d(3): Error: module wba is in file 'wba.d' which cannot be read It only works if I rename package.di to package.d 2) property methods doesn't work with header files. For this coding: property docHostUIHandler() { return this._docHostUIHandler; } This di coding was created: property docHostUIHandler(); While using in another project these errors are raised for the line in the di coding: Error: function declaration without return type. (Note that constructors are always named 'this') Error: no identifier for declarator docHostUIHandler() 3) How can I specify the output folder for the di files and also specify that the same folder structure is used as described above (wba, wba/com) Kind regards Andréi have little info about this, but let me clear something for you. - interface generation is outdated/broken - .di files should be avoided now, this is why import looking for .d only, but idk why. - to avoid property issue you can try adding export specifier("export property someProperty()") -Hd flag allows specify header location, -Hf specify name for example if you want to write them to directory named "imports" you call "dmd myfile.d -Hdimports" which save myfile.d to imports/myfile.di
Apr 05 2014
Am 05.04.2014 12:49, schrieb evilrat:i have little info about this, but let me clear something for you. - interface generation is outdated/broken - .di files should be avoided now, this is why import looking for .d only, but idk why. - to avoid property issue you can try adding export specifier("export property someProperty()") -Hd flag allows specify header location, -Hf specify name for example if you want to write them to directory named "imports" you call "dmd myfile.d -Hdimports" which save myfile.d to imports/myfile.diThanks a lot for clarification. Kind regards André
Apr 05 2014
On Saturday, 5 April 2014 at 10:00:13 UTC, Andre wrote:2) property methods doesn't work with header files. For this coding: property docHostUIHandler() { return this._docHostUIHandler; } This di coding was created: property docHostUIHandler();the problem with this that your code doesnt specify neither auto nor other return type. // not recommended, actual type unknown to users property auto docHostUIHandler() { return this._docHostUIHandler; } // recommended, manual type property HostUIHandlerType() { return this._docHostUIHandler; } p.s. language reference recommends also put underscore at end instead front, prepending underscore may be used by compiler generated stuff resulting in name clashes.
Apr 05 2014
On Saturday, 5 April 2014 at 10:55:19 UTC, evilrat wrote:// recommended, manual type property HostUIHandlerType() { return this._docHostUIHandler; }oops. this of course should be like normal function.
Apr 05 2014