我在我的Visual Studio 2012創建親一個新的DLL項目和主.cpp文件,除了這行空:如何在C++中創建一個名稱空間和構造函數?
#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是從i在控制檯應用程序項目創建該C項(文件/模塊)的函數。我有一個文件名爲example.c和video_encode_example在example.c
現在我向溶液中加入一個新的DLL項目和main.cpp的文件,除了行空的:#include「stdafx.h中」
什麼,我想在這main.cpp的dll項目做的是兩兩件事:
爲了例如創建一些功能
無效thisstart(){ }
然後,我想在這個啓動函數中調用一個start()函數,它在我創建的dll項目中的c文件/模塊中。
因此,它應該是這樣的:
void thisstart()
{
start();
}
從哪裏開始();是從C模塊/文件
然後,我要在c#中使用此dll和c#我想能夠使用thisstart()函數。
編輯
這是主要的。H的含有
namespace dllproj{
extern "C" void start();
void thisstart();
}
我得到兩個錯誤,現在dllproj:
- 錯誤2錯誤C2054:預期 '(' 跟隨 '命名空間'
- 4智能感知:預期的標識符
那麼這就是cpp文件內容現在:
#define dllproj;
#include "stdafx.h"
#include "targetver.h"
#include "main.h"
void thisstart()
{
dllproj;::start();
}
而且我得到了兩個錯誤:
- 的定義行:錯誤1錯誤C2008: ';':意外的宏定義
- 在dllproj; ::開始();錯誤3錯誤C2143:語法錯誤:缺少';'之前':'
請給我看完整的解決方案,並向我解釋在CSHARP中我將使用哪個變量與dll爲其創建實例並在cpp中調用此函數?在csharp中,例如當我添加dll時:test = new something();然後test.thisstart();
這個問題很難理解。我認爲如果你發佈你寫的代碼會有幫助。沒關係,如果它是錯誤的,它會幫助人們理解你正在嘗試做什麼。 – john 2013-04-25 16:07:35
它應該不是在'encode.start()'內嵌入'start()'嗎?你的例子試圖從c調用C++我猜?請澄清 – 2013-04-25 16:09:01
爲什麼你認爲你需要一個構造函數和/或命名空間?你以前用過嗎?爲什麼你認爲它們在DLL中的用法與其他任何類型的項目中的不同?你確定你想要一個DLL嗎? – 2013-04-25 16:15:28