Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何导出旧的C dll以便在C#类库中使用_C++_C_Dll_Export_Console Application - Fatal编程技术网

C++ 如何导出旧的C dll以便在C#类库中使用

C++ 如何导出旧的C dll以便在C#类库中使用,c++,c,dll,export,console-application,C++,C,Dll,Export,Console Application,有两个旧C文件,其中包含两个相关的标题 为了在VisualStudio 2013中使用它们,我创建了 VisualC++ Win32控制台应用程序/COD>,并禁用了Project属性的预编译头文件。 我删除了stdafx.h&targetver.h&dllmain.cpp&项目名称.cpp(由vs创建) 在头文件区域我添加了两个文件,在源文件区域我添加了另外两个文件。 我的项目是这样的: [ 考虑.c文件扩展名(no.cpp)。 在头文件中没有类用法,由于旧的c语言,您将在其中看到许多结构。

有两个旧C文件,其中包含两个相关的标题
为了在VisualStudio 2013中使用它们,我创建了 VisualC++ Win32控制台应用程序/COD>,并禁用了Project属性的预编译头文件。 我删除了
stdafx.h
&
targetver.h
&
dllmain.cpp
&
项目名称.cpp(由vs创建)

头文件
区域我添加了两个文件,在
源文件
区域我添加了另外两个文件。
我的项目是这样的:

[

考虑
.c
文件扩展名(no
.cpp
)。
在头文件中没有
用法,由于旧的c语言,您将在其中看到许多
结构。
现在我想导出这个项目的dll,以便在一个简单的控制台应用程序
c#
project中使用。
怎么能做到呢?
我将这段代码放在两个头文件的上部:

__declspec(dllexport) int main();
int main()
函数位于
wmm_file.c
文件中,此主函数在另一个c文件(
GeomagnetismLibrary.c
)中使用了许多函数。
在C++代码中,我要使用C++项目的所有功能。 这是我的c代码(
Prpogram.cs
):

以下是运行后的错误:

类型为“System.AccessViolationException”的未处理异常 发生在Magnetic_Model_CSharp.exe中

如何修复此错误并使该c(c++)项目可导出

编辑:
正如我的朋友所说,你不应该使用main关键字,所以我将其重命名。
对于一个测试,我创建了一个简单的
声明:

int Add(int a, int b); /* PUT IT ON GeomagnetismHeader.h FILE*/
定义:

int Add(int a, int b) /* PUT IT ON wmm_file.c FILE > I RENAMED main() TO main_____() IN THIS FILE*/
{
    printf("Hello Joy!\r\n");
    return a + b;
}
并将两者重新命名

__declspec(dllexport) int main(); 

在两个头文件中。
现在的问题是
intadd(inta,intb);
函数在
GeomagnetismHeader.h
文件中的声明位置。
当我把它放在typedef struct{前面时,它可以工作。
但是当我把它放在typedef结构之后时,{不起作用,我所有的声明都放在typedef结构之后{

有什么想法?

本教程中,我们可以用类关键字输出C++ DLL(OOP),但是这种情况又如何呢?你不应该在DLL中命名函数<代码>主< /代码>。
__declspec(dllexport) int main(); 
__declspec(dllexport)