C++调用引用类函数(混合代码)
我有一个引用混合 DLL 的应用程序 (CLI)。 DLL 使用静态函数实现“ref”类。
这是 ref-class
的(部分)代码
public ref class AAA
{
public:
static bool Write(System::String^ sz);
// Not accessible!!!
public: static BOOL TraceRect(const CRect& rc);
};
在 EXE 中,在 C++ 代码中,我尝试调用这两个函数:
// This works
AAA::Write("hello");
// This doesn't !!!
CRect rc(0, 0, 12, 234);
AAA::TraceRect(rc);
如何访问第二个函数?
I have an application (CLI) that references a mixed-DLL.
The DLL implements a "ref" class with static functions.
Here is the (partial) code for the ref-class
public ref class AAA
{
public:
static bool Write(System::String^ sz);
// Not accessible!!!
public: static BOOL TraceRect(const CRect& rc);
};
Within the EXE, in C++ code, I'm trying to call both functions:
// This works
AAA::Write("hello");
// This doesn't !!!
CRect rc(0, 0, 12, 234);
AAA::TraceRect(rc);
How can I access the second function?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这可能是因为本机类型(在本例中为 CRect)默认被视为私有类型。因此,虽然该方法是可访问的,但 rc 的参数类型是不可访问的。您可以使用 make_public 使其可访问:
http://msdn.microsoft.com/en-us/library/ms235607.aspx
搜索 C3767 和 make_public,您会发现有关该主题的大量其他信息。
It's probably because native types (in this case, CRect) are treated as private by default. So, while the method is accessible, the parameter type for rc is not accessible. You can make it accessible by using make_public:
http://msdn.microsoft.com/en-us/library/ms235607.aspx
Search for C3767 and make_public and you'll find plenty of other info on the topic.