我很好奇能够在Linux编译的C++代码中使用Windows中编译的最原始的DLL库.让我们假设库的问题不是滔天专有的东西从Windows核心;
...只有一个与假的API一样(这里是标题和实现):
// MathFuncsDll.h
namespace MathFuncs
{
class MyMathFuncs
{
public:
// Returns a + b
static __declspec(dllexport) double Add(double a, double b);
// Returns a - b
static __declspec(dllexport) double Subtract(double a, double b);
};
}
// MathFuncsDll.cpp
#include "MathFuncsDll.h"
using namespace std;
namespace MathFuncs
{
double MyMathFuncs::Add(double a, double b)
{
return a + b;
}
double MyMathFuncs::Subtract(double a, double b)
{
return a - b;
}
}
Run Code Online (Sandbox Code Playgroud)
除了<iostream>之外,这个库没有依赖项,不是吗?
Linux编译的.cpp将包含以下内容:
// MyExecRefsDll.cpp
// compile with: /EHsc …Run Code Online (Sandbox Code Playgroud) 我有一个第三方.dll文件及其源代码(用C#编写).我可以创建一个新项目并添加此.dll文件的引用以使用其方法.但是当我调试时,我想介入.dll文件中定义的方法(就像我们在java中有.jar文件及其源代码时那样).
我如何在Visual Studio Express中执行此操作(我有VS 2012).
所以,我正在制作一个我希望有一个函数来生成随机数的DLL.我想知道哪些选项更有效(性能明智).
这个只是在DLL中创建一个函数,允许我得到一个随机数.
int getRand(unsigned int seed) {
int rNum; // Random Number.
srand(seed);
rNum = (rand() % // Whatever I need here.
}
Run Code Online (Sandbox Code Playgroud)
或者,只是使用srand(time(nullptr))和rand()在应用程序中性能更好?
谢谢,
约翰尼P.
我用qt creator构建了一个C++库.qt在debug文件夹3文件中为我构建:
Run Code Online (Sandbox Code Playgroud)'1. libSerialize.a' and '2. Serialize.dll' and 'serialize.o' .
现在我想将这个库添加到另一个qt项目中.我怎样才能做到这一点?.我怎么能包括那个图书馆?.我应该在哪里复制那些?.哪一个是必要的?.这是我的.pro档案:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = get_send_array
TEMPLATE = app
SOURCES += main.cpp\
widget.cpp \
student.cpp
HEADERS += widget.h \
student.h
Run Code Online (Sandbox Code Playgroud)
谢谢,请帮助我.
我正在测试一个名为clunk的小型声音库(http://sourceforge.net/projects/clunk/).我为visual studio 11构建了该库,并将其链接到我的visual studio项目中.当我尝试test.cpp时,我收到了msvcr110d.dll抛出的断言.
是否与我的运行时库设置有关:它是" 多线程调试DLL(/ MDd) "?在clunk的cmakelist.txt中,我添加了以下代码行:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
Run Code Online (Sandbox Code Playgroud)
我仍然收到指针分配问题的消息.为什么?
我目前有一个使用32位dll的C#项目.我想要做的是在C++项目中使用dll,遗憾的是项目中引用的dll没有.h或.lib文件,所以我对如何访问dll中的类或使用我感到困惑我在C++项目中的DLL文件(Visual Studio 2010).我在这里读到,如果一个dll文件包含类,它很可能是一个COM组件.有关我应该查看的内容的任何建议,以便集成和使用该DLL中的方法和对象.
更新:
我通过执行import语句检查它是否是COM.但是我得到了"找不到.tlb文件".然后我决定使用依赖walker检查任何导出的方法(对象)似乎没有.我点击了主文件(已突出显示),但看不到任何导出的功能.我应该检查下一步的任何提示?这是我从依赖walker得到的.

我正在使用Visual Studio 2012,托管C++,在第三方SDK和我们用C#编写的系统之间建立桥梁.我成功地包装并使用了SDK中的几个函数.除了一个,只会导致未解决的外部错误.
SDK的头文件定义了函数的签名:
#if defined WIN32
#if defined BUILD_ADS_SHARED_LIB
#define ADS_LINK_SPEC __declspec (dllexport)
#define ADS_CALLING_CONVENTION __stdcall
#elif defined USE_ADS_SHARED_LIB
#define ADS_LINK_SPEC __declspec (dllimport)
#define ADS_CALLING_CONVENTION __stdcall
#else
#define ADS_LINK_SPEC
#define ADS_CALLING_CONVENTION
#endif
#else
#define ADS_LINK_SPEC
#define ADS_CALLING_CONVENTION
#endif
DatabaseResult ADS_LINK_SPEC ADS_CALLING_CONVENTION
createDatabase(
const Settings& settings, Artec::SdkDatabase::iDatabase *& instance);
Run Code Online (Sandbox Code Playgroud)
错误说:
Error 10 error LNK2028: unresolved token (0A000089) "enum Artec::SdkDatabase::DatabaseResult __cdecl Artec::SdkDatabase::createDatabase(class Artec::SdkDatabase::Settings const &,class Artec::SdkDatabase::iDatabase * &)" (?createDatabase@SdkDatabase@Artec@@$$FYA?AW4DatabaseResult@12@ABVSettings@12@AAPAViDatabase@12@@Z) referenced in function "private: static enum Artec::SdkDatabase::DatabaseResult __clrcall Broadway3dWrapper::Broadway3dWrapper::GetConn(wchar_t const *,wchar_t const …Run Code Online (Sandbox Code Playgroud) 我用VC++生成了一个*.dll.当我想使用它时,需要*.lib.但我找不到它.如何获得*.lib?谢谢.
好吧,我有一个用C++编写的库,我没有源代码,我只有3个文件:
带扩展名的MFSSDM:dll,h和lib.
我想在Visual C#的项目中使用它(Visual Studio 2010或2012)
这可能是最快的方式吗?
rubenc
我正在用c ++加载一个delphi dll.当我使用char*作为缓冲区的函数(char*作为过程的参数给出)时,我只得到垃圾数据.当我有返回char*的函数时,一切都很好.
我是c ++的新手,我花了很多时间试图解决这个问题.请帮忙.
一切都在下面的代码中解释.我已经有3个功能来展示我的意思.
缓冲区有问题的示例函数是:DLL_PingConnection(var avXml:PChar):Boolean; - 它返回true/false,作为参数,它需要缓冲区并且函数在缓冲区中完成,应该有有效的xml(但只有垃圾)
#include <windows.h> //this will load delphi dll
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>
using namespace std;
// ------------------------------------------------ pointers on functions inside Delphi DLL (32 bits)
typedef bool(*TYPE_DLL_SetLicense)(char*, char*); //initialize dll stuff - I load licence from a file into char* - everything works fine
typedef bool(*TYPE_DLL_PingConnection)(char*); //the char* is buffer - I give empty char* as parameter and I should get correct xml with serwer data - …Run Code Online (Sandbox Code Playgroud)