Tried that. Still no luck. Hm. I'm not sure how you've been building your DLL, but if you're including the _cgo_export.h in your .c file which is then compiled/linked into a DLL, perhaps you could manually try changing this line: extern void RVExtension(char* p0, size_t p1, char* p2);
into what is suggested here, https://community.bistudio.com/wiki/Extensions: extern __attribute__((dllexport)) void RVExtension(char *output, int outputSize, const char *function); And see if that does it. Other than that, I'm afraid I don't have any more ideas for you to try. Sorry. On Tue, Jun 25, 2019 at 10:07 AM Alexander Kapshuk <alexander.kaps...@gmail.com> wrote: > > Wander if specifying those linker flags via the '-ldflags' command > line option would make a difference: > go help build: > -ldflags '[pattern=]arg list' > arguments to pass on each go tool link invocation. > > On Tue, Jun 25, 2019 at 9:16 AM nicolas_boiteux via golang-nuts > <golang-nuts@googlegroups.com> wrote: > > > > it tried to also allow those flags by setting the env variablee ldflag > > allow but it seems to have no effect. > > > > Le lundi 24 juin 2019 21:15:34 UTC+2, nobody nobodye a écrit : > >> > >> it seems that flags --no-undefined --enable-runtime-pseudo-reloc are > >> invalid flags :( > >> > >> /* > >> #cgo LDFLAGS: --no-undefined --enable-runtime-pseudo-reloc > >> #include <stdlib.h> > >> #include <stdio.h> > >> #include <string.h> > >> */ > >> import "C" > >> > >> > >> > >> Le lundi 24 juin 2019 18:58:22 UTC+2, Alexander Kapshuk a écrit : > >>> > >>> The part of interest is the functions you want exported from the Go > >>> program: > >>> > >>> 1 0 000813C0 RVExtension > >>> 2 1 00081360 RVExtensionArgs > >>> 3 2 00081310 RVExtensionVersion > >>> > >>> This article, http://www.mingw.org/wiki/sampledll, in section > >>> 'Building and using a DLL without the dllexport/dllimport attibutes' > >>> suggests the following approach: > >>> If you pass the --no-undefined and --enable-runtime-pseudo-reloc > >>> options to the linker, you don't have to add dllimport or dllexport > >>> attributes to the source code that the DLL is made with ; all > >>> functions are imported/exported automatically by default, just like in > >>> unices. > >>> > >>> Can you please try putting the following cgo directive for the linker > >>> in your Go file: > >>> // #cgo LDFLAGS: --no-undefined --enable-runtime-pseudo-reloc > >>> > >>> If you then rebuild your dll and see if the definition of your > >>> exported functions changes to _fn_name@arg_size in the output of > >>> dumpbin. > >>> You can use 'findstr' to filter the output of dumpbin based on a > >>> search pattern like so: > >>> dumpbin.exe /EXPORTS slib.dll | findstr "RVExtension" > >>> > >>> On Mon, Jun 24, 2019 at 7:35 PM nicolas_boiteux via golang-nuts > >>> <golan...@googlegroups.com> wrote: > >>> > > >>> > Hello Alexander > >>> > > >>> > you can find the dump at this place: > >>> > https://pastebin.com/cg33nktu > >>> > > >>> > Le lundi 24 juin 2019 13:00:49 UTC+2, Alexander Kapshuk a écrit : > >>> >> > >>> >> Or was this it? > >>> >> > >>> >> #ifdef __cplusplus > >>> >> extern "C" { > >>> >> #endif > >>> >> extern void _RVExtensionVersion(char* p0, size_t p1); > >>> >> extern void _RVExtensionArgs(char* p0, size_t p1, char* p2, char** p3, > >>> >> int p4); > >>> >> extern void _RVExtension(char* p0, size_t p1, char* p2); > >>> >> #ifdef __cplusplus > >>> >> } > >>> >> #endif > >>> >> > >>> >> The 32-bit exports listed here, > >>> >> https://community.bistudio.com/wiki/Extensions, are most likely what > >>> >> is listed in the module-definition file ending in .def. > >>> >> Can you please try using the following declaration: > >>> >> //export RVExtension > >>> >> func RVExtension(output *C.char, outputsize C.size_t, input *C.char) > >>> >> {...} > >>> >> > >>> >> Compile your dll and post the output of dumpbin.exe /EXPORTS > >>> >> /path/to/slib.dll showing the listing of your exported symbols? > >>> >> > >>> >> On Mon, Jun 24, 2019 at 11:41 AM Alexander Kapshuk > >>> >> <alexande...@gmail.com> wrote: > >>> >> > > >>> >> > If I understand it correctly, cgo should have generated a > >>> >> > _cgo_export.h header with a declaration for your exported function. > >>> >> > Can you please post the generated declaration? > >>> >> > > >>> >> > On Mon, Jun 24, 2019 at 12:47 AM <ono...@gmail.com> wrote: > >>> >> > > > >>> >> > > We are trying to make the x32 version of the extension, as shown > >>> >> > > in the link below. > >>> >> > > https://community.bistudio.com/wiki/Extensions#C.2FC.2B.2B > >>> >> > > > >>> >> > > How we see, for x64 we must use entry points > >>> >> > > > >>> >> > > RVExtension > >>> >> > > RVExtensionArgs > >>> >> > > RVExtensionVersion > >>> >> > > > >>> >> > > > >>> >> > > but for x32 > >>> >> > > > >>> >> > > _RVExtension@12 > >>> >> > > _RVExtensionArgs@20 > >>> >> > > _RVExtensionVersion@8 > >>> >> > > > >>> >> > > > >>> >> > > It is very hard for me to explain to you exactly what we need, > >>> >> > > because I am new to this language, and C doesn’t know at all. I > >>> >> > > really hope that you understand what I mean. > >>> >> > > > >>> >> > > воскресенье, 23 июня 2019 г., 22:20:53 UTC+3 пользователь Kurtis > >>> >> > > Rader написал: > >>> >> > >> > >>> >> > >> On Sun, Jun 23, 2019 at 4:49 AM nicolas_boiteux via golang-nuts > >>> >> > >> <golan...@googlegroups.com> wrote: > >>> >> > >>> > >>> >> > >>> I need some assistance to export a GO dll function to a C > >>> >> > >>> program. > >>> >> > >>> > >>> >> > >>> The C program (wich i m not the author) required to call a > >>> >> > >>> function with this name: _RVExtension@12 > >>> >> > >> > >>> >> > >> > >>> >> > >> That is not a valid symbol (i.e., function name) in either C or > >>> >> > >> Go. In other words the following C is invalid: > >>> >> > >> > >>> >> > >> extern int _RVExtension@12(); > >>> >> > >> int main() { > >>> >> > >> _RVExtension@12(); > >>> >> > >> } > >>> >> > >> > >>> >> > >> Your question has nothing to do with Go or C as such. What does > >>> >> > >> the "@12" represent? Is it an API version number? In any event > >>> >> > >> your question is really about a specific build toolchain on a > >>> >> > >> specific platform. And you didn't even bother to tell us what > >>> >> > >> platform you are using. I'm guessing MS Windows but we shouldn't > >>> >> > >> have to make such guesses. > >>> >> > >> > >>> >> > >> -- > >>> >> > >> Kurtis Rader > >>> >> > >> Caretaker of the exceptional canines Junior and Hank > >>> >> > > > >>> >> > > -- > >>> >> > > You received this message because you are subscribed to the Google > >>> >> > > Groups "golang-nuts" group. > >>> >> > > To unsubscribe from this group and stop receiving emails from it, > >>> >> > > send an email to golan...@googlegroups.com. > >>> >> > > To view this discussion on the web visit > >>> >> > > https://groups.google.com/d/msgid/golang-nuts/ec18ff38-d70b-41ef-b7b4-fb243f407e1c%40googlegroups.com. > >>> >> > > For more options, visit https://groups.google.com/d/optout. > >>> > > >>> > -- > >>> > You received this message because you are subscribed to the Google > >>> > Groups "golang-nuts" group. > >>> > To unsubscribe from this group and stop receiving emails from it, send > >>> > an email to golan...@googlegroups.com. > >>> > To view this discussion on the web visit > >>> > https://groups.google.com/d/msgid/golang-nuts/0e90774a-3814-4d71-b752-8cd399cb26e3%40googlegroups.com. > >>> > For more options, visit https://groups.google.com/d/optout. > > > > -- > > You received this message because you are subscribed to the Google Groups > > "golang-nuts" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to golang-nuts+unsubscr...@googlegroups.com. > > To view this discussion on the web visit > > https://groups.google.com/d/msgid/golang-nuts/42f99da7-1f92-4826-90a3-b785fdc3d071%40googlegroups.com. > > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAJ1xhMW1gBc3%2BpiEBZ6-6E8W6kwKQfbE97194yQKgM%3DnrOme5A%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.