【发布时间】:2015-12-10 22:46:40
【问题描述】:
我需要将 C++ File.exe 源代码转换为 File.dll 。为此,我将此源的配置类型更改为动态库 (.dll),Visual Studio 构建 File.dll 而不是 File.exe。
现在我尝试将此 File.dll 用于我的 C# 项目。这个 dll 入口点是这样的:
int wmain(int argc, wchar_t* argv[])
{
// codes
}
在此之后,我将参数传递给 CMD 中的 File.exe,例如:
File.exe -l -a "This is first arg !"
但现在事情变得复杂了。我知道在 C# 代码中使用 C++ dll 就像:
[DllImport(@"File.dll" , EntryPoint = "wmain")]
private static extern int wmain(int a , string arg);
我的问题:
1.下面的代码是错误的,因为我不知道如何将 (wchar_t* argv[]) 声明为 C# 变量?!
2.如果我在 C# 中运行以下代码,它会给出:'Unable to find an entry point named 'wmain' in DLL 'File.dll'.' 所以看来我应该先做某事以明确 C# 的入口点。那是什么?!
更新 1: 似乎this link 对我的第一个问题有相同的场景,但不同之处在于我使用数组并且找不到与 (wchar_t) 相同的类在 c# 中。
【问题讨论】:
-
@JamesRoot 它是相似的,但不同的是我的代码是一个数组!那么如何在同一场景中传递数组?!
-
我建议更新您的问题以引用相关的问题/答案并说明为什么它不同以避免意外作为重复关闭。
-
this 回答建议您可以将其称为指向指针的指针,而不是指针数组。
-
最后,最好选择一个不同的名称,因为
wmain对 C++ 工具链具有特殊意义。
标签: c# c++ dll entry-point