C# 如何仅使用C++;需要.a/.lib/.o文件吗? 甚至可以.NET的p/UncCK调用只使用DLL文件的DLL中的函数,但C++不能在没有的情况下执行它。
背景: <>我试图从一个从C++ C++编写的DLL中使用一个函数,但是我已经告诉过,只有DLL文件加上标题不足以满足<代码>。A/LB< <代码> /<代码> .O/COD>文件。使用minGw和C++/CLI编译此dll的方式不支持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>并直接调用它。
.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();