我在我的 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 项目中做两件事:
例如创建一些功能
无效 thisstart() { }
然后我想在这个启动函数中调用我在 dll 项目中创建的 ac 文件/模块中的 start() 函数。
所以它应该看起来像:
void thisstart()
{
start();
}
哪里开始();来自 c 模块/文件
然后我将在 c# 中使用这个 dll,在 c# 中我希望能够使用 thisstart() 函数。
编辑
这是 main.h 的内容:
namespace dllproj{
extern "C" void start();
void thisstart();
}
我现在在 dllproj 上遇到两个错误:
- 错误 2 错误 C2054: 预期 '(' 跟随 'namespace'
- 4 IntelliSense:需要一个标识符
然后这是现在的cpp文件内容:
#define dllproj;
#include "stdafx.h"
#include "targetver.h"
#include "main.h"
void thisstart()
{
dllproj;::start();
}
我收到两个错误:
- 在定义行上:错误 1 错误 C2008:';' : 宏定义中的意外
- 在 dllproj;::start(); 错误 3 错误 C2143:语法错误:缺少 ';' 前 ':'
请向我展示完整的解决方案并向我解释稍后我将在 CSHARP 中使用哪个变量来为它创建一个实例并在 cpp 中调用此函数?
例如,在 csharp 中,当我添加 dll 时: test = new something(); 然后 test.thisstart();