If you want to test, you can retrieve the content of this git :

https://github.com/code34/armago_x64/tree/32bits

build the 32 bits dll in the same directory with the name : armago.dll

after this you only have to called : callextension.exe ./test_script.sqf

if the dll doesn't works as expected it will return a method unrecognized, 
if not return the string declared in the test_script.sqf


Le mardi 25 juin 2019 18:53:27 UTC+2, nobody nobodye a écrit :
>
> Conflicting declaration for RVExtension declaration :( and the -ldflags 
> doesn't shown the same parameters.
>
>
> Le mardi 25 juin 2019 13:27:14 UTC+2, Alexander Kapshuk a écrit :
>>
>> 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 
>> <alexande...@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 
>> > <golan...@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 golan...@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/dc63308e-3ad5-4f9f-8bc0-6092c0a9f324%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to