Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=79479 --- shadow/79479 2006-09-22 22:26:48.000000000 -0400 +++ shadow/79479.tmp.8971 2006-09-22 22:26:48.000000000 -0400 @@ -0,0 +1,165 @@ +Bug#: 79479 +Product: Mono: Runtime +Version: 1.1 +OS: GNU/Linux [Other] +OS Details: Gentoo and Linux voyage 2.6.15-486-voyage +Status: NEW +Resolution: +Severity: +Priority: Blocker +Component: JIT +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Cc: +Summary: DllImport does'nt work in mono versions >= 1.1.10 + +Description of Problem: +DllImport has issues. Additional info has the code which is self +explanatory in nature and will help in reproducing the issue. + +Note: I get expected results in mono-1.0.5-r5 only. I have tried +mono-1.1.10 and mono-1.1.13.8, 1.1.12.1 and they all have issue dealing +with ImportDll. + +Steps to reproduce the problem: +1. Copy the code into 4 files LinuxPlatform.cpp, LinuxPlatform.cpp, +Makefile and Class1.cs +2. make (In my case make was done in gentoo distribution of linux) +3. mcs Class1.cs +4. mono Class1.exe + +Actual Results: +prompt # /tmp/mono/bin/mono Class1.exe + +Unhandled Exception: System.DllNotFoundException: dlltest.dll +in (wrapper managed-to-native) DllTest.Class1:test_dll (int) +in <0x0000d> DllTest.Class1:Main (System.String[] args) + +prompt # /tmp/mono/bin/mono -V +Mono JIT compiler version 1.1.10, (C) 2002-2005 Novell, Inc and +Contributors. www.mono-project.com + TLS: normal + GC: Included Boehm (with typed GC) + SIGSEGV : normal + + +Expected Results: + +prompt # mono Class1.exe +dlltest_Init(0) called! +Main native code test_dll(0) == 1 + +prompt # mono -V +Mono JIT compiler version 1.0.5, (C) 2002-2004 Novell, Inc and +Contributors. www.go-mono.com + TLS: __thread + GC: Included Boehm (with typed GC) + SIGSEGV : altstack + Globalization: ICU + + +How often does this happen? Every time and consistently reproducible + + +Additional Information: +1. LinuxPlatform.cpp +------------------------------- + +prompt # cat LinuxPlatform.cpp + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include <unistd.h> +#include <sys/ioctl.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <linux/sockios.h> +#include <net/if.h> +#include <net/if_arp.h> +#include <net/route.h> +#include <asm/types.h> +#include <linux/rtnetlink.h> +#include <linux/if_ether.h> +#include <sys/poll.h> +#include <errno.h> +#include <time.h> +#include "LinuxPlatform.h" + +int dlltest_Init(int val) +{ + printf("dlltest_Init(%d) called!\n", val); + return (val + 1); +} + +2. LinuxPlatform.h +---------------------- +promot # cat LinuxPlatform.h + +extern "C" +{ + + int dlltest_Init(int val); +} + +// End of File + +3. Makefile +------------- + +prompt # cat Makefile +CC= /usr/bin/g++ +LD= /usr/bin/ld +MAKE= /usr/bin/gmake +RM= /bin/rm -f +CP= /bin/cp + +COMMON_OBJS= LinuxPlatform.o + +CFLAGS= -fPIC -O0 -g -O0 -Wall -DLINUX -I. +LDFLAGS= -shared -lc -lm +SHRLIB= libdlltest.so.1 +INSTALLNAME= libdlltest.dll.so +INSTALLDIR= + +all:: Makefile libdlltest.dll.so + +libdlltest.dll.so: *.cpp *.h + $(MAKE) $(COMMON_OBJS) $(LOCAL_OBJS) + $(LD) $(COMMON_OBJS) -soname $(SHRLIB) -o $(SHRLIB).0 $(LDFLAGS) + mv libdlltest.so.1.0 libdlltest.dll.so + +$(COMMON_OBJS): %.o: %.cpp + $(CC) -c $(CFLAGS) $< + + +clean: + $(RM) *.o core *.core *~* *.a *.0 *.so + +4. Class1.cs +--------------- + +prompt # cat Class1.cs +using System.Runtime.InteropServices; +using System; + +namespace DllTest +{ + class Class1 + { + [DllImport("dlltest.dll", EntryPoint="dlltest_Init")] + private static extern int test_dll(int val); + + [STAThread] + static void Main(string[] args) + { + int ret = Class1.test_dll(0); + Console.WriteLine("Main native code test_dll(0) == +" + ret); + } + } +} _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
