我正在使用DUMPBIN实用程序从c ++ dll获取损坏的名称以在c#应用程序中使用。 我正在使用__declspec(dllexport)公开一个c ++类成员函数,输出错位名称结果如下:
?InitPort@CProtocolStack@@QAEEHEPAEKE@Z = ?InitPort@CProtocolStack@@QAEEHEPAEKE@Z (public: unsigned char __thiscall CProtocolStack::InitPort(int,unsigned char,unsigned char *,unsigned long,unsigned char))
导入相同的功能时,是否需要在C#应用程序中使用整个名称? 如果没有,哪一部分足以进口?
答案 0 :(得分:2)
你只需要这一点:
?InitPort@CProtocolStack@@QAEEHEPAEKE@Z
然后你宣布它为:
[DllImport("your.dll",
EntryPoint = "?InitPort@CProtocolStack@@QAEEHEPAEKE@Z",
ExactSpelling = true)]
static extern byte CProtocolStack::InitPort( /* etc. */);
答案 1 :(得分:1)
唐'吨。如果您不使用托管C ++(可以调用它)
直接来自C#),在你的界面中声明函数
extern "C"
,然后直接使用函数名称。莽莽可以
从编译器的一个版本更改为下一个版本; extern
"C"
名称赢了。
答案 2 :(得分:0)
如果不需要重载函数,可以使用import React from "react";
import styled from "styled-components";
import SVG from "react-inlinesvg";
import radio from "./radio.svg";
interface SVGProps {
color: string;
}
const StyledSVG = styled(SVG)<SVGProps>`
width: 24px;
height: 24px;
& path {
fill: ${({ color }) => color};
}
`;
export default function App() {
const color = "#007bff";
return <StyledSVG color={color} src={radio} />;
}
确定函数的名称。