gpt4 book ai didi

.net - C++/CLI 混合模式 DLL 创建

转载 作者:行者123 更新时间:2023-12-03 21:20:30 24 4
gpt4 key购买 nike

我有一个 native C++ DLL,我想要一个 C++/CLI 包装层。据我了解,如果您简单地向项目添加 C++/CLI 类,VS 将编译为混合模式,但我显然错了,因为 VS 似乎甚至没有触及托管代码。

那么,给定一个预先存在的 native 代码库,您需要逐步创建混合模式 DLL,以便我可以从任何 .NET 语言链接到该代码?

*我需要这样做,因为我的 native 代码使用我无法 P/Invoke 的 C++ 类。

最佳答案

好吧,不,除非您告诉 C++/CLI 编译器您的旧 DLL 是用非托管代码编写的,否则它不会成为混合模式。这应该很明显,您应该从非托管 DLL 导出中获得链接器错误。您需要使用 #pragma 管理:

#pragma managed(push, off)
#include "oldskool.h"
#pragma comment(lib, "oldskool.lib")
#pragma managed(pop)

using namespace System;

public ref class Wrapper {
private:
COldSkool* pUnmanaged;
public:
Wrapper() { pUnmanaged = new COldSkool; }
~Wrapper() { delete pUnmanaged; pUnmanaged = 0; }
!Wrapper() { delete pUnmanaged; }
void sampleMethod() {
if (!pUnmanaged) throw gcnew ObjectDisposedException("Wrapper");
pUnmanaged->sampleMethod();
}
};

关于.net - C++/CLI 混合模式 DLL 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2691325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com