C# 关于一个.dll中的多个类,如何使用P/Invoke?
我对使用p/Invoke相当陌生。因此,我现在可以使用P/Invoke,正如Microsoft教程中所述:C# 关于一个.dll中的多个类,如何使用P/Invoke?,c#,pinvoke,C#,Pinvoke,我对使用p/Invoke相当陌生。因此,我现在可以使用P/Invoke,正如Microsoft教程中所述: [DLLImport("msvcrt.dll")] public static extern int puts(string c); 那就打电话吧 public void UsePuts() { puts("Testing"); } 但是,我现在正在测试我想要使用的实际.dll。通过查看源代码,我发现在一个.dll文件中,似乎有多个类(比如Class1.cpp和Class2.cpp
[DLLImport("msvcrt.dll")]
public static extern int puts(string c);
那就打电话吧
public void UsePuts()
{
puts("Testing");
}
但是,我现在正在测试我想要使用的实际.dll。通过查看源代码,我发现在一个.dll文件中,似乎有多个类(比如Class1.cpp和Class2.cpp)
例如,我想使用Class1(puts)中的函数和Class2(puts)中的函数,我应该如何构建DLLImport?像这样
[DLLImport("msvcrt.dll")]
public static extern int Class1.puts(string c);
[DLLImport("msvcrt.dll")]
public static extern int Class2.puts(string c);
或者如何?非常感谢 检查这个
嗨,如果我不明白,很抱歉。这和我的问题有关吗?我编辑它是为了让它更清晰。谢谢如果我不明白,可以在AttributeSorry中为函数指定EntryPoint,但我从Microsoft的教程文章中读到EntryPoint属性用于更改用于C#方法的名称。是这样吗?
public class LibWrap
{
/*
class PINVOKELIB_API CTestClass
{
public:
CTestClass( void );
int DoSomething( int i );
private:
int m_member;
};
*/
[ DllImport( "..\\LIB\\PinvokeLib.dll",
EntryPoint="?DoSomething@CTestClass@@QAEHH@Z",
CallingConvention=CallingConvention.ThisCall )]
public static extern int TestThisCalling( IntPtr ths, int i );
// CTestClass* CreateTestClass();
[DllImport( "..\\LIB\\PinvokeLib.dll" )]
public static extern IntPtr CreateTestClass();
// void DeleteTestClass( CTestClass* instance )
[ DllImport( "..\\LIB\\PinvokeLib.dll" )]
public static extern void DeleteTestClass( IntPtr instance );
}