J'essaie d'apprendre les bases de l'attachement non géré C++ et. NET. Donc, j'ai la DLL compilée et appelable de C#. Génial. Maintenant, je rencontre ce problème bizarre:Strange DLL + InterropServices problème
Voici mon C++ fichier, Main.cpp
:
#include <stdio.h>
extern "C" __declspec(dllexport) void DisplayHelloFromDLL()
{
printf ("Hello from the World of 1986!\n");
}
et le fichier C#, Program.cs
:
using System; using System.Runtime.InteropServices;
namespace FancyApp {
class Program
{
[DllImport("ConsoleApp.dll")]
public static extern void DisplayHelloFromDLL();
static void Main()
{
Console.WriteLine("Hello form the World of 2008!");
DisplayHelloFromDLL();
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
}
}
assez simple. Lorsque la construction, je reçois ConsoleApp.dll
du côté C++, et FancyApp.exe
de C#.
Effectué, il délivre en sortie
Bonjour former le monde de 2008!
Bonjour du monde de 1986!
Appuyez sur une touche pour quitter
comme il se doit, sauf en mode de sortie de VS2008 (Appuyez sur F5), je reçois
Bonjour former le monde de 2008!
Appuyez sur une touche pour quitter
Maintenant, si je vais à Explorer et exécuter la version release de FancyApp.exe
sans VS, il fonctionne très bien.
Des idées?
J'ai téléchargé mon dossier de solutions here (180kb).
Depuis printf est vraiment à partir de l'époque de C, ce devrait probablement être le monde de 1970. :) –
Hehe. Je pensais que 1986 est à peu près au moment où Microsoft a créé Windows et ses DLL sophistiquées. – biozinc