Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何仅使用C++;需要.a/.lib/.o文件吗? 甚至可以.NET的p/UncCK调用只使用DLL文件的DLL中的函数,但C++不能在没有的情况下执行它。_C#_C++_C++ Cli_Mingw_Pinvoke - Fatal编程技术网

C# 如何仅使用C++;需要.a/.lib/.o文件吗? 甚至可以.NET的p/UncCK调用只使用DLL文件的DLL中的函数,但C++不能在没有的情况下执行它。

C# 如何仅使用C++;需要.a/.lib/.o文件吗? 甚至可以.NET的p/UncCK调用只使用DLL文件的DLL中的函数,但C++不能在没有的情况下执行它。,c#,c++,c++-cli,mingw,pinvoke,C#,C++,C++ Cli,Mingw,Pinvoke,背景: 我试图从一个从C++ C++编写的DLL中使用一个函数,但是我已经告诉过,只有DLL文件加上标题不足以满足。A/LB< / .O/COD>文件。使用minGw和C++/CLI编译此dll的方式不支持.a文件,而只支持.libs。我必须使用MSVC编译器/链接器重新编译此dll。所以我想知道为什么C#中这个“简单”的东西会起作用: 但是,C++中的DLL需要更多的工作/需要文件。我是个乞丐,所以我可能漏掉了什么东西。 你可以在C++中使用 GePosiTrave/Cuff>并直接调用它。

背景:

<>我试图从一个从C++ C++编写的DLL中使用一个函数,但是我已经告诉过,只有DLL文件加上标题不足以满足<代码>。A/LB< <代码> /<代码> .O/COD>文件。使用minGw和C++/CLI编译此dll的方式不支持
.a
文件,而只支持
.lib
s。我必须使用MSVC编译器/链接器重新编译此dll。所以我想知道为什么C#中这个“简单”的东西会起作用:

<>但是,C++中的DLL需要更多的工作/需要文件。我是个乞丐,所以我可能漏掉了什么东西。

你可以在C++中使用<代码> GePosiTrave/Cuff>并直接调用它。这与P/Invoke的功能类似


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

对于MS和GNU工具,导入库在技术上是不必要的。这只是一种方便。但是OP有一点,即C++语言不支持动态库:C++是工具问题。LucasTrzesniewski:你不需要一个静态链接的导入库。@ CalthHththyYp,实际上我在思考<代码> DEF < /C>文件。你可以简单地创建Ipp.LIB文件,你很好。
[DllImport("foo.dll",
        CallingConvention = CallingConvention.Cdecl,
        EntryPoint="_Z9getNumberv")]
    public static extern int GetNumber();