gpt4 book ai didi

c# - 如何在 dll 项目中用 C++ 创建命名空间和构造函数?

转载 作者:行者123 更新时间:2023-11-30 17:52:24 26 4
gpt4 key购买 nike

我在 Visual Studio 2012 Pro 上创建了一个新的 DLL 项目,主 .cpp 文件除了这一行之外是空的:

#include "stdafx.h"

在这个 dll 项目中,我添加了一个新的 C 语言项(模块),其中包含一些函数。

事实上,我想在我的主 .cpp 文件中创建一些函数,这些函数将调用 c 项(模块)中的函数。

例如,在 .cpp 文件中我将有这样的内容:

void start()

{

encoder.start();

}

然后在 .cpp 中我需要添加一个构造函数,以便我可以在那里调用 start()

我该怎么做?

这是我的解决方案中的一个示例,我有两个项目,一个控制台应用程序,一个 dll。这是控制台应用程序项目的主 cpp 文件的内容:

#include "stdafx.h"
#include "targetver.h"

extern "C" {
void video_encode_example(const char *filename);
}


int _tmain(int argc, _TCHAR* argv[])
{

video_encode_example("adi.avi");
return 0;
}

vide_encode_example 是我在控制台应用程序项目中创建的这个 c 项目(文件/模块)的函数。我有一个名为 example.c 的文件,video_encode_example 位于 example.c

现在我向解决方案添加了一个新的 dll 项目,并且 main.cpp 文件是空的,除了以下行:#include "stdafx.h"

我想在 main.cpp 的这个 dll 项目中做两件事:

  1. 例如创建一些函数

    void thisstart() { }

然后我想在这个start函数中调用start()函数,该函数位于我在dll项目中创建的c文件/模块中。

所以它应该看起来像:

void thisstart()
{
start();
}

从哪里开始();来自 c 模块/文件

然后我将在 C# 中使用这个 dll,并且在 C# 中我希望能够使用 thisstart() 函数。

编辑

这是main.h内容:

namespace dllproj{

extern "C" void start();
void thisstart();
}

我现在在 dllproj 上遇到两个错误:

  1. 错误 2 错误 C2054:预期“(”位于“命名空间”之后
  2. 4 IntelliSense:需要一个标识符

然后这是现在的cpp文件内容:

#define dllproj;

#include "stdafx.h"
#include "targetver.h"
#include "main.h"

void thisstart()
{
dllproj;::start();
}

我收到两个错误:

  1. 在定义行:错误 1 ​​错误 C2008:“;” : 宏定义中出现意外
  2. 在 dllproj 上;::start();错误 3 错误 C2143:语法错误:缺少 ';'在“:”之前

请向我展示完整的解决方案,并向我解释稍后在 CSHARP 中我将与 dll 一起使用哪个变量来为其创建实例并在 cpp 中调用此函数?

例如,在 csharp 中,当我添加 dll 时: test = new Something();然后 test.thisstart();

最佳答案

来自评论“start()位于dll项目中(我创建的c语言文件test.c)”

1) 创建一个头文件,例如 main.h 并添加以下内容

namespace dllproj{

extern "c"
{
extern void start();
}
void thisstart();
}

2)将main.h添加到main.cpp中并定义thisstart()

 void dllproj::thisstart()
{
dllproj::start();
}

确保在 dll 中使用 __declspec(dllexport) 声明 start()。

关于c# - 如何在 dll 项目中用 C++ 创建命名空间和构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16219508/

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