0
我有一个用于第三方应用程序的DLL,通常通过命名管道与它通信。但是NP只在其他应用程序启动时才起作用。我可以直接从dll调用一个方法来查看它的版本。从.NET调用C++方法
C++ VS2012
#ifdef MTFST_EXPORTS
#define MTFST_API __declspec(dllexport)
#else
#define MTFST_API __declspec(dllimport)
#endif
#define LIBRARY_VERSION "3.0"
....
using namespace std;
MTFST_API char *__stdcall FST_LibraryVersion()
{
return LIBRARY_VERSION;
}
我尝试下面的代码,但它不工作。 .NET 4.
internal class Program
{
[DllImport("Library.dll")]
private static extern char[] FST_LibraryVersion();
private static void Main(string[] args)
{
Console.WriteLine(new string(FST_LibraryVersion()));
}
}
尝试使用编译模式 '在任何CPU',代替X86或64,或与X86汇编 – Gisway
.NET代码值为anycpu。 C++ lib是x86。 –
您的C++函数返回'IntPtr',而不是'char []'。请参阅:http://stackoverflow.com/questions/370079/pinvoke-for-c-function-that-returns-char – 2013-07-24 16:30:56