使用C和asm代码将程序转换为DLL
我的算法包含C和asm代码。我需要在C#应用程序中调用此算法。我想知道是否可以将C和asm代码转换为DLL,然后在C#控制台应用程序中调用它。但我很不清楚如何将耦合的C和asm代码算法转换为DLL。任何帮助表示赞赏。使用C和asm代码将程序转换为DLL
我知道如何使用PInvoke在C#中调用DLL。我的问题是将合并的C和asm代码转换为DLL。当我尝试使用extern“C”和dllexport时,VS 2010保持呕吐错误。有超过90个错误!大多数错误都是抱怨C++不支持我使用的东西(虽然它们在C中是有效的)。例如像这行代码:
const u8 *error_string_base="ERROR: ";
给出了一个
error C4430: missing type specifier -int assumed. Note C++ does not support default-int
是的,你可以调用非托管代码是从C#的DLL。
Platform Invocation Services (PInvoke) allows managed code to call unmanaged functions that are implemented in a DLL.
http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx
你可能会想看看从C#
http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx#pinvoke_callingdllexport
UPDATE调用DLL直接出口的话题(根据您的修改)
Compil > C/C++ - - >高级 - >为编译,然后选择 'C'
感谢您的回复。但是,我知道如何使用PInvoke在C#中调用DLL。我的问题是将合并的C和asm代码转换为DLL。当我尝试使用extern“C”和dllexport时,VS 2010保持呕吐错误。有任何想法吗? – Shambavi 2012-07-19 02:54:10
@Shambavi,你需要包含错误和导致错误的行,以便任何人回答你的问题。 – shf301 2012-07-19 02:56:12
有超过90个错误!大多数错误都是抱怨C++不支持我使用的东西(实际上在C中有效)。例如,下面这行代码:const u8 * error_string_base =“ERROR:”;给出错误C4430:缺少类型说明符-int。注意C++不支持default-int – Shambavi 2012-07-19 03:04:31
更好的方法是创建一个DLL应用程序(COM DLL或电子邮件您在C模式下,而不是C++模式
进入属性的应用其他),并写VC++ 你的代码,这是非常类似于C,你也可以合并这样
__asm {
mov al, 2
mov dx, 0xD007
out dx, al
}
你的汇编代码,我的意思是使用__asm keyword.Creating DLL应用程序是不是一个大问题网上有很多资源。导入和导出DLL有很多约束,为什么你的代码保持呕吐错误。
非常感谢Alok!我会尝试使用VC++和__asm关键字。我应该为所有.h和.c文件使用extern“C”吗? – Shambavi 2012-07-19 03:37:35
尝试并保持您的问题为重点。如果您知道如何从C#调用DLL,那么甚至不要提及它。如果我们不知道它们是什么,我们无法帮助您解决错误。 – 2012-07-19 03:02:12