Bug 55821 - DllImport not compatible with CLR
Summary: DllImport not compatible with CLR
Status: NEW
Alias: None
Product: Runtime
Classification: Mono
Component: Interop (show other bugs)
Version: unspecified
Hardware: PC Windows
: --- normal
Target Milestone: ---
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2017-04-29 22:50 UTC by Marius Ungureanu
Modified: 2017-04-29 23:01 UTC (History)
2 users (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments

Description Marius Ungureanu 2017-04-29 22:50:26 UTC
Given an extern definition for printf:

static extern int printf(string format, int num);

on Windows, the following DllImport's are valid

[DllImport("msvcrt.dll")]
[DllImport("msvcrt.dll    ")]
[DllImport("msvcrt.dll                        ")]


This is not valid though:

[DllImport(" msvcrt.dll")]

On Mono, this fails with dll not found. Probably, Windows does a TrimEnd on the library name.
Comment 1 Marius Ungureanu 2017-04-29 23:01:46 UTC
var attr = typeof(MainClass).GetMethod("printf", BindingFlags.Static | BindingFlags.NonPublic).GetCustomAttribute<DllImportAttribute>();

attr.Value includes the whitespace.

So the fix is in the library loading code.

This is the only member that supports trailing whitespace removal.

Note You need to log in before you can comment on or make changes to this bug.