如何p/调用调用函数只使用,但c++需要.a/.lib/.o文件

本文关键字:调用 需要 c++ 文件 lib 函数 如何 | 更新日期: 2023-09-27 18:14:15

如何甚至可能的。net的p/调用调用一个函数内的DLL只使用DLL文件,但对于c++你不能做到没有.a/.lib/.o文件?

背景:

我试图从c++/CLI应用程序中使用dll"编写"的c++函数,但我已经告诉只有dll文件加上头是不够的,我也需要.a/.lib/.o文件。如何使用minGw和c++/CLI编译此dll不支持.a文件,但只有.lib s,我将不得不使用MSVC编译器/链接器重新编译此dll。所以我想知道为什么这个"简单"的事情在c#中工作:

[DllImport("foo.dll",
        CallingConvention = CallingConvention.Cdecl,
        EntryPoint="_Z9getNumberv")]
    public static extern int GetNumber();

但是在c++中创建dll需要更多的工作/需要文件。我是一个乞丐,所以我可能遗漏了一些东西。

如何p/调用调用函数只使用,但c++需要.a/.lib/.o文件

可以在c++中使用GetProcAddress并直接调用它。这与P/Invoke的功能类似。

使用导入库是为了使标准链接器工作(而p/Invoke和GetProcAddress绕过链接器)。