C# 关于一个.dll中的多个类,如何使用P/Invoke?

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

我对使用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)

例如,我想使用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 ); 
}